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 会导致无限循环或抛出 nil 异常