我有一个自定义 UIView 子类,其中附加了一些 UIButtons 。对于每个按钮,在 UIViewController 上定义了一个目标动作,其中包括自定义 UIView 。
不知何故, TouchUpInside 事件永远不会被包含在ViewController之类的自定义视图中捕获。由于UIViews是 UIResponderChain 的一部分,我想知道为什么事件没有被解雇?委派目标行动是否有意义,还是应该采取另一种方式?
自定义UIView子类:CustomView
let button = UIButton(frame: CGRectMake(10.0, 10.0, 100.0, 100.0))
button.addTarget(self.delegate, action: "buttonTapped:", forControlEvents: .TouchUpInside)
的ViewController
// Include the custom view
let customView = CustomView()
customView.delegate = self
self.view.addSubview(customView)
...
func buttonTapped(sender: AnyObject!) {
// Doesn't get called
}
答案 0 :(得分:1)
您是否在自定义视图中将userInteractionEnabled
设置为YES
?默认情况下,它是NO
来自UIResponder
(主要是按钮)的视图。
如果视图为userInteractionEnabled = NO
,则会忽略触摸事件。
答案 1 :(得分:0)
我假设你添加目标时self.delegate是nil ... 几点解决方案:
答案 2 :(得分:0)
不幸的是我错过了为按钮声明框架矩形 - 所以按钮正在显示,但它们确实无法点击。