[英]How to add Button to userLocation callout?
如何在Apple Maps應用程序的userLocation(藍點)標注中顯示DisclosureButton?
現在我可以更改其標題和副標題,但我希望提供自定義標注視圖。 因此,如果我點擊藍點,它除了標題和副標題外還可以顯示一個按鈕。 這樣,當我點擊按鈕時,它可以引導我到另一個視圖。 當注釋== self.mapView.userLocation時,我在viewForAnnotation中返回了MKAnnotationView。 但是,標注可以顯示更新的標題和副標題,但不能顯示我添加的按鈕。
我真的需要這個功能,我希望得到任何幫助和建議!
我嘗試過camdaochemgio的解決方案,但它只適用於第二次點擊。 這是一個始終有效的解決方案:
-(void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
for (MKAnnotationView* view in views)
{
if ([view.annotation isKindOfClass:[MKUserLocation class]])
{
view.rightCalloutAccessoryView=[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
}
}
}
對於annotationView,請設置
myAnnotationView.canShowCallout=YES;
然后添加兩個按鈕
myAnnotationView.leftCalloutAccessoryView=myLeftButton;
myAnnotationView.rightCalloutAccessoryView=myRightButton;
按鈕可以是普通按鈕,自定義按鈕或預定義類型之一。 像這樣:
myAnnotationView.rightCalloutAccessoryView=[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
然后添加calloutAccessoryControlTapped:
方法來處理點擊。
也許遲到了。 這是解決方案。 您實現UIMapViewDelegete方法如下:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
if ([view.annotation isKindOfClass:[MKUserLocation class]] && !view.rightCalloutAccessoryView) {
view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.