2016-05-24 58 views
0

我有一個協議使用7.3

protocol AnnotationTapDelegate: AnyObject { 

    /* Delegate to identify the tap on Annotation view */ 
    func didTapAnnotation(sender: UITapGestureRecognizer) 
} 

和一類

class CustomAnnotationView: MKAnnotationView { 
    func setTapDelegate(delegate: AnnotationTapDelegate!) { 
     let tapGesture = UITapGestureRecognizer(target: delegate, action: #selector(AnnotationTapDelegate.didTapAnnotation(_:))) <== Error 
     self.addGestureRecognizer(tapGesture) 
    } 
} 

這給了我編譯錯誤說「的‘#selector’參數指的是一種方法,在Objective-C中沒有公開「,並給出了」添加'@ obj-c'以將其公開給Objective-C「的建議。在添加'@ obj-c'之後,我也得到相同的錯誤,並再次添加'@ obj-c'。問題沒有解決。

我在Xcode 7.3.1中工作。

前,我才

let tapGesture = UITapGestureRecognizer(target: delegate, action: "didTapAnnotation:") 

這是工作的罰款。更新我的Xcode到7.3.1之後,我正面臨着這個問題。

如何將我的協議的功能設置爲選擇器?

回答

2

您需要在協議級別添加@objc。

@objc 
protocol AnnotationTapDelegate: AnyObject { 

    /* Delegate to identify the tap on Annotation view */ 
    func didTapAnnotation(sender: UITapGestureRecognizer) 
} 
+0

謝謝!有用。 – iOS

+0

歡迎您:) –

+0

其實'@ obj-c'被添加到func中。將其添加到協議工作。 – iOS