2017-05-12 47 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