我目前正在关注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)))
这一次,没有显示错误信息,但是当我运行项目并试图在模拟器中放大或缩小笑脸时,它根本不会改变大小。
答案 0 :(得分:3)
似乎自上次发布以来发生了一些变化。
有人建议您使用
#selector(MyClass.methodName)
正如文档所做的那样,这是正确的语法
在斯坦福大学的讲座中,你在视图上有一个名为FaceView的课程,其中有一个名为 scale 的方法。
所以MyClass是FaceView,选择器将是#selector(FaceView.scale)
最后一行也将如此
faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: faceView, action: #selector(FaceView.scale)))
希望我帮助你,我只是面对同样的问题;)