2017-05-12 328 views
0

我在繞着手勢識別器纏繞我的大腦時遇到了麻煩。我想定位一個子視圖。這裏是與主視圖工作的例子:手勢識別器問題

let gesture = UITapGestureRecognizer(target: hex_pin_view!, action: #selector(openEmojis(sender:))) 
gesture.delegate = self 
mapView.addGestureRecognizer(gesture) 

這裏的子視圖的目標,此劑量不工作,就是我在尋找:

let gesture = UITapGestureRecognizer(target: hex_pin_view!.add_emoji_img_view, action: #selector(openEmojis(sender:))) 
gesture.delegate = self 
mapView.addGestureRecognizer(gesture) 

我得到一個崩潰的錯誤:

unrecognized selector sent to instance 

如果選擇器是相同的,我不明白。

任何人都有線索我可能做錯了什麼?

+0

選擇器方法必須存在於目標上。 – rmaddy

回答

0

手勢識別器的target是將接收來自手勢識別器的消息的對象。或者簡單地說,保存將處理消息的函數的對象。

很多時間目標:設置爲自我。

selector是將處理消息的函數/方法。

let gesture = UITapGestureRecognizer(target: self, action: #selector(openEmojis(sender:))) 
gesture.delegate = self 
mapView.addGestureRecognizer(gesture) 

因此,在那裏,當前類/對象應該有一個叫做openEmojis的方法。手勢被添加到mapView這裏

mapView.addGestureRecognizer(gesture) 

所以當地圖被挖掘時,你的函數應該被調用。

如果您希望在觸摸子視圖時觸發手勢。而是將手勢識別器添加到子視圖中:

add_emoji_img_view.addGestureRecognizer(gesture) 
+0

感謝您的回覆。我試圖將手勢識別器添加到子視圖中,但沒有運氣。忘記提及主視圖是在作爲子視圖添加到MKAnnotationView的UIView類中。 – Hexagons

+0

MKAnnotationView有它自己的手勢識別器已經我相信 – Scriptable

+0

我得到錯誤: 由於未捕獲的異常'NSInvalidArgumentException'終止應用程序,原因:' - [UIImageView openEmojisWithSender:]:無法識別的選擇器發送到實例 – Hexagons