2014-07-05 80 views
2

我有一個自定義MKPinAnnotationView創建爲這樣:按鈕內部的自定義圖標查看未響應(SWIFT)

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! { 
    if annotation is MKUserLocation { 
     //return nil so map view draws "blue dot" for standard user location 
     return nil 
    } 

    let reuseId = "pin" 
    var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView 

    if pinView == nil { 
     pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId) 
     pinView!.canShowCallout = false 
     pinView!.animatesDrop = true 
     pinView!.pinColor = .Red 
     pinView!.draggable = true; 
    } else { 
     pinView!.annotation = annotation 
    } 

    return pinView 
} 

然後我添加一個子視圖到後來用這樣的一個按鈕:

func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!) { 
    view.addSubview(confirm) 
} 

問題是子視圖中的按鈕根本沒有響應。可能是什麼原因造成的?我已經嘗試使用userInteraction啓用。 感謝

+0

你不想使用內置的rightCalloutAccessoryView或leftCalloutAccessoryView屬性?如果將它們設置爲UIButton,則輕敲它們將調用calloutAccessoryControlTapped委託方法。 – Anna

回答

3

不知道這是否符合或幫助,但在我的情況下,我在那裏我有類似的代碼,我設置

pinView!.canShowCallout = true 

,然後如果你想有一個簡單的方法來捕捉按鈕點擊我把FUNC內我的ViewContriller:

func buttonClicked (sender : UIButton!) { 
    println("Button Clicked") 
} 

這聽起來像你想做一些有點不同,但。

哎呀..在前面的回答我忘了,我說只是

return pinView 

上面的按鈕....

let button : UIButton = UIButton.buttonWithType(UIButtonType.DetailDisclosure) as UIButton 
    button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) 
    pinView!.rightCalloutAccessoryView = button 
    return pinView 

現在buttonClicked FUNC可以趕上標註。

+0

如果我用當前視圖替換當點擊引腳時沒有任何顯示......我是否還需要添加子視圖到MKAnnotationView? – user591375