I know there already are some questions about this but I couldn't find a solution. There is a very simple code that works just fine on one of my projects but not on an another one:
Here is the code for subclass of UIView.
import UIKit
class test : UIView {
init(frame: CGRect, color: UIColor) {
super.init(frame: frame)
self.backgroundColor = color
self.userInteractionEnabled = true
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
super.touchesBegan(touches, withEvent: event)
var alert = UIAlertView()
alert.title = "lol"
alert.message = "lol"
alert.addButtonWithTitle("Ok")
alert.show()
}
}
I'm sure the solution is quite simple but I can't find it.
You need to make sure that userInteractionEnabled
is enabled on all of the superviews of your view. If any of the superviews have this property set to false
, the touch events won't be processed for them or any of their subviews.
Maybe some of the superviews has the userInteractionEnabled set to "false"?
来源:https://stackoverflow.com/questions/30443177/touchesbegan-not-called-in-uiview-subclass