의 방법을 사용하여 :나는 프로토콜과 프로토콜의 확장 만든 프로토콜
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)
}
}
을하지만 만드는 메신저 UIPanGestureRecognizer
를 Where이 나에게 오류를주고있다 :
인가 거기 방법을보기 컨트롤러에Error: Argument of '#selector' refers to instance method 'handlePan(recogniser:)' that is not exposed to Objective-C
handlePan
메서드를 추가하는 대신이 문제를 해결하려면?
(handlePan (_ :))' – vadian
@vadian 사실상 정식 서명은'#selector (handlePan (recognizer :))'일 것이다. - handlePan이 명확하지 않다하더라도, #selector (handlePan)은 완벽하게 수용 가능하다. – Hamish