2012-09-02 60 views
2

我創建了一個應用程序,您可以拖動視圖。我需要UIScrollView不適合的特殊行爲。但現在問題是這些視圖中的一些響應觸摸事件,當我拖動它們時,我必須取消觸摸。如何取消與UIScrollView完全相同的觸摸?

UIScrollView能夠取消其子視圖中的觸摸,以便當用戶觸摸按鈕然後開始滾動時,只要用戶滾動足夠多,滾動視圖就會取消按鈕中的觸摸,以便按鈕不會觸發動作。

做到這一點的一種方法是將每個子視圖進行子類化,並在所有觸摸處理方法中使用布爾標誌,但這會非常繁瑣和骯髒。

是否有更好的方式通過API取消子視圖中的觸摸就像UIScrollView呢?

回答

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。這樣做會讓你擁有一切小技巧。