2

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

UIScrollView 能够取消其子视图中的触摸,因此当用户按下按钮然后开始滚动时,只要用户滚动足够多,滚动视图就会取消按钮中的触摸,因此按钮不会触发一种行为。

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

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

4

1 回答 1

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

于 2012-09-02T14:11:12.147 回答