问题
I have the following code
lazy private var _containerView: UIView = {
let view = UIView(frame: self.view.frame)
let tapGesture = UITapGestureRecognizer(
target: self,
action: Selector(("didtapContainerView:"))
)
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = UIColor(white: 0.0, alpha: 0)
view.addGestureRecognizer(tapGesture)
tapGesture.delegate = self
return view
}()
and this is the method
@objc final func didtapContainerView(gesture: UITapGestureRecognizer) {
setDrawerState(state: .Closed, animated: true)
}
and I am getting this error
Forsa.KYDrawerController didtapContainerView]: unrecognized selector sent to instance
回答1:
You don't know how to make the correct selector for this method. (It would be "didtapContainerViewWithGesture:"
, but clearly you don't know that.)
So don't try. Use #selector
syntax and let the compiler form the selector for you!
Just say #selector(didtapContainerView)
. Done.
回答2:
This is Swift , Correct the selector to this
let tapGesture = UITapGestureRecognizer(target: self,action: #selector(didtapContainerView(_:)))
//
@objc func didtapContainerView(_ gesture: UITapGestureRecognizer) {
setDrawerState(state: .Closed, animated: true)
}
来源:https://stackoverflow.com/questions/51469740/unrecognized-selector-sent-to-instance-for-my-tap-gesture