touchesBegan在UIView子类中没有调用

我知道已经有一些关于这个问题,但我找不到解决scheme。 有一个非常简单的代码,可以在我的一个项目上正常工作,但不会在另一个项目上工作:

这里是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() } } 

我相信这个解决scheme很简单,但我找不到它。

您需要确保在视图的所有超级视图上启用了userInteractionEnabled 。 如果任何超级浏览器将此属性设置为false ,那么触摸事件将不会为他们或他们的任何子视图进行处理。

也许一些superviews的userInteractionEnabled设置为“false”?

Interesting Posts