我创建了一个可以拖动视图的应用。我需要UIScrollView不适合的特殊行为。但现在问题是这些视图中的一些会响应触摸事件,当我拖动它们时,我必须取消触摸。
UIScrollView能够取消其子视图中的触摸,这样当用户触摸按钮然后开始滚动时,滚动视图会在用户滚动时立即取消按钮中的触摸,以便按钮不会触发动作。
一种方法是将每个子视图子类化,并在所有触摸处理方法中使用布尔标志,但这将非常繁琐和肮脏。
是否有更好的方法通过API取消子视图中的触摸,就像UIScrollView一样?
答案 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一样。这样做会让你拥有所有的小动作。