如何取消与UIScrollView完全相同的触摸?

时间:2012-09-02 07:46:05

标签: iphone ios cocoa-touch ipad uiscrollview

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

UIScrollView能够取消其子视图中的触摸,这样当用户触摸按钮然后开始滚动时,滚动视图会在用户滚动时立即取消按钮中的触摸,以便按钮不会触发动作。

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

是否有更好的方法通过API取消子视图中的触摸,就像UIScrollView一样?

1 个答案:

答案 0 :(得分:2)

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