Swift:手势识别器无法识别的选择器已发送至实例

Swift: Gesture Recognizer unrecognized selector sent to instance

我正在尝试在 XCode 中制作手势识别器,以便我可以点击我的 MKMapView 并执行一些操作。但是,每当我长按地图时,我都会收到 "unrecognized selector sent to instance"。

这是我在 viewDidLoad 中的代码:

let gestureRecognizer = UILongPressGestureRecognizer(target: self, action: "handleTap:");
self.mapViewPlace.addGestureRecognizer(gestureRecognizer);

下面是函数:

func handleTap(gestureReconizer: UILongPressGestureRecognizer) {

}

有什么想法吗?

请给 Neo 点赞。您需要将语法更改为:

let gestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleTap)

旁注:对于 Swift,您不需要在代码行末尾使用分号。

默认情况下 Swift 生成的代码仅适用于其他 Swift 代码,但是如果您需要与 Objective-C 运行时交互——例如所有 UIKit——您需要告诉 Swift 该怎么做。

所以只需添加它并修改选择器声明:

@objc func handleTap(gestureReconizer: UILongPressGestureRecognizer) {
...
}
...
let swipe = UISwipeGestureRecognizer(target: self, action: #selector(handleTap(gestureReconizer:)))