使用方法,我创建了一个协议,该协议的扩展:在协议
protocol SomeProtocol: class {
var someView: UIView { get set }
func handlePan(recognizer: UIPanGestureRecognizer)
}
extension SomeProtocol where Self: UIViewController {
func handlePan(recognizer: UIPanGestureRecognizer) {
// implementation
}
}
class SomeViewController: UIViewController, SomeProtocol {
var someView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
someView.frame = CGRect(x: 100, y: 200, width: 50, height: 50)
someView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan)))
someView.backgroundColor = .black
view.addSubview(someView)
}
}
但是,这是给我的错误的IM创造UIPanGestureRecognizer
:
Error: Argument of '#selector' refers to instance method 'handlePan(recogniser:)' that is not exposed to Objective-C
是否有方法来解决这个问题,而不是在视图控制器中添加handlePan
方法?
由于该方法需要签名应该是'#selector参数(handlePan(_ :) )' – vadian
@vadian实际上,正式签名将是'#selector(handlePan(recognitionizer :))' - 尽管'handlePan'是明确的,'#selector(handlePan)'是完全可以接受的。 – Hamish