我创建了一个应用程序,您可以在其中拖动 View 。我需要 UIScrollView 不适合的特殊行为。但现在的问题是,其中一些 View 响应触摸事件,当我拖动它们时,我必须取消触摸。
UIScrollView 能够取消其 subview 中的触摸,这样当用户按下按钮然后开始滚动时,一旦用户滚动得足够多, ScrollView 就会取消按钮中的触摸,以便按钮不触发操作。
一种方法是对每个 subview 进行子类化,并在所有触摸处理方法中使用 bool 标志,但这会非常乏味且肮脏。
是否有更好的方法通过 API 来取消 subview 中的触摸,就像 UIScrollView 那样?
最佳答案
它通过 UIGestureRecognizer API 取消触摸。 UIScrollView实际上在底层使用了UIPanGestureRecognizer。 http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40009279-CH1-SW9
UIGestureRecognizer 还能够延迟触摸开始发送和触摸结束。
@property(nonatomic) BOOL delaysTouchesBegan
@property(nonatomic) BOOL delaysTouchesEnded
为了执行拖动手势,我现在使用 UIPanGestureRecognizer,如 UIScrollView。这样做会让你掌握所有的小技巧。
关于iphone - 如何像 UIScrollView 一样取消触摸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234238/