手势识别器问题

Gesture recognizer issues

我无法全神贯注于手势识别器。我想定位一个子视图。这是一个适用于主视图的示例:

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

选择器是一样的,我不明白。

有人知道我哪里做错了吗?

手势识别器的target是将从手势识别器接收消息的对象。或者简单地说,就是拥有处理消息的函数的对象。

很多时候 target: 被设置为 self。

selector 是将处理消息的 function/method。

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

因此,当前 class/object 应该有一个名为 openEmojis 的方法。在此处将手势添加到 mapView

mapView.addGestureRecognizer(gesture)

因此,当点击地图时,应该调用您的函数。

如果您希望在点击子视图时触发手势。而是将手势识别器添加到子视图:

add_emoji_img_view.addGestureRecognizer(gesture)