如何像UIScrollView一样取消触摸



我创建了一个应用程序,可以在其中拖动视图。我需要特殊的行为,而UIScrollView并不适合。但现在的问题是,其中一些视图会对触摸事件做出响应,当我拖动它们时,我必须取消触摸。

UIScrollView能够取消其子视图中的触摸,因此当用户按下按钮并开始滚动时,只要用户滚动足够多,滚动视图就会取消对按钮的触摸,这样按钮就不会触发动作。

一种方法是对每个子视图进行子类化,并在所有触摸处理方法中使用布尔标志,但这将非常乏味和肮脏。

有没有更好的方法通过API来取消子视图中的触摸,就像UICrollView一样?

它通过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一样。这样做会让你拥有所有的小技巧。

最新更新