没有使用 Objective c 选择器 'scale' 声明的方法

No method declared with Objective c selector 'scale'

我目前正在听关于 iOS 开发的斯坦福讲座。我想创建一个可以放大或缩小笑脸大小的捏合手势。这是原始代码:

faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: faceView, action: "scale:"))

然而,Xcode抱怨“no method declared with Objective c selector 'scale'”。

我按照它的建议替换了 "scale:" with Selector("scale:"),但它仍然显示相同的错误消息。

我在网上做了一些研究,发现从 swift 2.2 开始,选择器的语法已更改为 #selector(MyClass.methodName),因此我将代码行更改为

faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: faceView, action: #selector(FaceView.scale)))

这一次,没有显示错误消息,但是当我运行项目并尝试在模拟器中放大或缩小笑脸时,它根本没有改变大小。

自上次发布以来似乎发生了一些变化。

有人建议您使用 #selector(MyClass.methodName) 正如文档所做的那样,这是正确的语法

在你的斯坦福讲座中,你有一个名为 FaceView 的视图 class,其方法名为 scale

所以 MyClass 是 FaceView,选择器将是 #selector(FaceView.scale)

最后一行也是 faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: faceView, action: #selector(FaceView.scale)))

希望对你有所帮助,我刚遇到同样的问题;)