标题或多或少都说明了一切。在回复touchesBegan
事件时,我的UIViewController
会自行重复并添加一些子视图。
它永远不会收到touchesEnded
。我猜是因为添加的子视图以某种方式拦截了事件。我尝试在子视图上调用resignFirstResponder
无效。
当我不添加子视图并且触摸事件被正常调用时,代码工作正常。
有什么想法吗?
由于
编辑:一些细节以及我如何修复它。
基本上我有一个带有一些子视图的主视图,当我触摸子视图时,事件将被传递到主视图,但是,在此事件中,我正在删除子视图并在其位置添加新视图。触摸起源于不再存在的子视图这一事实意味着其余的触摸都丢失了。
我通过在主视图中覆盖hitTest:withEvent来修复此问题,以阻止对子视图进行测试
答案 0 :(得分:8)
在将子视图添加为子视图之前,您是否尝试将userInteractionEnabled
属性设置为NO?
答案 1 :(得分:1)
您需要使用以下内容将子视图中的触摸传递到超级视图:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
}