UIView 事件转发无限循环

Posted

技术标签:

【中文标题】UIView 事件转发无限循环【英文标题】:UIView Event Forwarding Infinite Loop 【发布时间】:2011-02-12 07:07:29 【问题描述】:

我创建了一个 UIView 子类,我在其中拦截所有触摸,检查某些条件,如果不满足,则将触摸转发到适当的子视图。问题是,如果子视图没有拦截触摸,它会直接转发到响应者链到我的视图,这里我将它back转发到子视图,依此类推。我怎样才能阻止这种情况发生?

【问题讨论】:

你是如何转发触摸事件的? 调用[super hitTest: withEvent:]获取合适的视图,如果不是self,调用[aView touchesMoved: withEvent:] 【参考方案1】:

响应者链旨在将事件传递给超级视图。我会让子视图有选择地处理事件(检查相反的条件),以便在必须处理事件时将事件转发到超级视图。

但是,如果只有超级视图可以检查条件,子视图将必须处理超级视图发送的所有事件(至少不要调用将事件转发给超级视图的 UIView 的事件处理例程)。

【讨论】:

以上是关于UIView 事件转发无限循环的主要内容,如果未能解决你的问题,请参考以下文章

从nib实例化UIView会导致无限循环问题

从 nib 加载自定义 UIView 会导致无限循环或抛出 nil 异常

超过最大更新深度。使用 TimePickerInput onChange 事件 React.js 时的无限循环

KVO 无限循环/循环

启动和停止无限循环

用 Python 编写的强大的服务器无限循环