我正在研究斯坦福Swift Course iOS9 from 2016,并且在复制UIPinchGestureRecognizer时遇到麻烦,对选择器代码语法非常困惑。
FaceViewConroller.Swift中的内部类FaceViewController:
@IBOutlet weak var faceView: FaceView! {
didSet {
faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: self, action: #selector(changeScale(_:))))
updateUI()
}
}
FaceView.Swift中Faceview的内部类定义:
@objc
func changeScale(_ recognizer: UIPinchGestureRecognizer) {
switch recognizer.state {
case .changed,.ended:
scale *= recognizer.scale
recognizer.scale = 1.0
default:
break
}
}
它的构建没有错误(花了一段时间),但是当运行捏合手势会导致错误:
Faceit.FaceViewController changeScale:]:无法识别的选择器已发送到实例
谢谢。
答案 0 :(得分:2)
您传递了错误的target
参数。
由于要调用的方法(changeScale
是在FaceView
中声明的,因此目标应该是FaceView
的实例,而不是FaceViewController
,因为{{1 }}没有FaceViewController
方法。
所以:
changeScale