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

时间:2016-04-19 05:19:10

标签: ios swift view controller selector

我目前正在关注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)))

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

1 个答案:

答案 0 :(得分:3)

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

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

在斯坦福大学的讲座中,你在视图上有一个名为FaceView的课程,其中有一个名为 scale 的方法。

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

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

希望我帮助你,我只是面对同样的问题;)