7

标题或多或少说明了一切。为了响应一个touchesBegan事件,我UIViewController重新着色并添加了一些子视图。

它从不接收touchesEnded. 我猜是因为添加的子视图以某种方式拦截了事件。我尝试调用resignFirstResponder子视图无济于事。

当我不添加子视图并且触摸事件被正常调用时,代码工作正常。

有任何想法吗?

谢谢

编辑:一些细节以及我如何修复它。

基本上我有一个带有一些子视图的主视图,当我触摸子视图时,事件将传递到主视图,但是,在这个事件中,我删除了子视图并在它们的位置添加了新的。触摸源自不再存在的子视图这一事实意味着其余的触摸都丢失了。

我通过在我的主视图中覆盖 hitTest:withEvent 来解决这个问题,以停止对子视图进行测试

4

2 回答 2

8

userInteractionEnabled在将其添加为子视图之前,您是否尝试将子视图的属性设置为 NO ?

于 2010-03-25T15:49:08.677 回答
1

您将需要使用以下方式将触摸从子视图传递到父视图:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    [super touchesBegan:touches withEvent:event];
}
于 2010-03-19T19:28:46.593 回答