iOS手勢篇(三)-UIGestureRecognizer代理詳解
3.代理
@protocol UIGestureRecognizerDelegate <NSObject> @optional - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0); - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0); - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch; - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePress:(UIPress *)press; @end
-
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
手勢識別器是否能夠開始識別手勢.
當手勢識別器識別到手勢,準備從UIGestureRecognizerStatePossible狀態開始轉換時.呼叫此代理,如果返回YES,那麼就繼續識別,如果返回NO,那麼手勢識別器將會將狀態置為UIGestureRecognizerStateFailed. -
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
gestureRecognizer : 此物件傳送的代理訊息.
返回YES允許gestureRecognizer與otherGestureRecognizer同時識別.
如果返回NO,分兩種情況.1.兩個手勢都返回NO,那麼不會同時識別.如果一個NO,一個YES.可能會同時識別. -
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);
一般用來重寫該方法.來定義什麼時候手勢識別失敗.如果直接返回YES,那麼gestureRecognizer與otherGestureRecognizer互斥的話gestureRecognizer識別失敗. 可以用tap手勢和longPress手勢試試. -
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);
和3差不多,注意這個Be,所以是相反的,如果互斥,otherGestureRecognizer識別失敗. -
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
返回手勢識別器是否允許檢查手勢物件.
UIKit將會在touchesBegan:withEvent:
方法之前呼叫這個代理. -
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePress:(UIPress *)press;
返回手勢識別器是否允許檢查按壓(UIPress物件).
UIKit將會在touchesBegan:withEvent:
方法之前呼叫這個代理.