UIScrollView 事件处理

Posted

技术标签:

【中文标题】UIScrollView 事件处理【英文标题】:UIScrollView event handling 【发布时间】:2010-10-15 02:43:29 【问题描述】:

出于某种原因,我正在尝试制作自己的自定义 UIScrollView。问题是,是否可以完全模仿UIScrollView 的事件处理行为,包括“延迟内容触摸”和“可取消内容触摸”?也就是说,自定义滚动视图应该延迟处理事件,直到它可以确定滚动是否是意图,并且它还应该能够稍后取消其子视图的触摸。问题如下:

1) hitTest:应该立即返回,这样我就不能延迟触摸所有者的确定。 2) 我们不能稍后以编程方式取消触摸事件。没有这样的 api。 3) 我试图覆盖sendEvent: 方法,但没有帮助。必须调用 [super sendEvent:] 会将事件发送到非预期视图。而且,调用sendEvent:的时候已经完成了命中测试,以后不能再修改UITouch.view的值了。

那么问题又来了,是否可以在不使用UIScrollView 的情况下制作自定义UIScrollView,包括它的触摸处理行为?

提前致谢!

【问题讨论】:

真正的问题是:值得麻烦吗? 【参考方案1】:

要记住的一点是,在 ios 5.0 发布之前,用于常规 UIScrollViews 的手势识别器(Pan 和 Zoom)是私有属性。我想当它们公开时,您可以将它们转移到您自己的滚动视图中。

【讨论】:

以上是关于UIScrollView 事件处理的主要内容,如果未能解决你的问题,请参考以下文章

两个重叠的 UIScrollView 可以同时处理一个事件吗?

嵌套的 uiscrollviews 和自定义处理事件路由

使用后将覆盖 UIView 的触摸事件转发到下面的 UIScrollView

UIScrollView 触摸处理

如何在 iOS 开发中处理自定义事件?

如何将触摸事件从 ScrollView 子视图传递到它的父视图