无法识别的选择器发送到实例 - XCode 9.4.1,Swift 4.0
unrecognized selector sent to instance - XCode 9.4.1, Swift 4.0
我正在学习 Stanford Swift Course iOS9 from 2016 并且在复制 UIPinchGestureRecognizer 时遇到问题,对 Selector 代码语法感到非常困惑。
在 Class 中的 FaceViewController 中 FaceViewConroller.Swift:
@IBOutlet weak var faceView: FaceView! {
didSet {
faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: self, action: #selector(changeScale(_:))))
updateUI()
}
}
Class 中 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:]: unrecognized selector sent to instance
谢谢。
您传递了错误的 target
参数。
由于您要调用的方法 (changeScale
) 是在 FaceView
中声明的,目标应该是 FaceView
的实例,而不是 FaceViewController
,因为 FaceViewController
没有 changeScale
方法。
所以:
faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: faceView, action: #selector(changeScale(_:))))
我正在学习 Stanford Swift Course iOS9 from 2016 并且在复制 UIPinchGestureRecognizer 时遇到问题,对 Selector 代码语法感到非常困惑。
在 Class 中的 FaceViewController 中 FaceViewConroller.Swift:
@IBOutlet weak var faceView: FaceView! {
didSet {
faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: self, action: #selector(changeScale(_:))))
updateUI()
}
}
Class 中 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:]: unrecognized selector sent to instance
谢谢。
您传递了错误的 target
参数。
由于您要调用的方法 (changeScale
) 是在 FaceView
中声明的,目标应该是 FaceView
的实例,而不是 FaceViewController
,因为 FaceViewController
没有 changeScale
方法。
所以:
faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: faceView, action: #selector(changeScale(_:))))