2015-01-12 115 views
0

我已經創建了兩個滑動識別器:swipeRightRecognizer & swipeLeftRecognizer和一個捏識別器:pinchRecognizeriOS捏手勢與滑動手勢衝突

當我捏入/出,捏住事件和滑動左識別器事件都會被捕獲。

我已經試過

[swipeLeftRecognizer requireGestureRecognizerToFail:pinchRecognizer]; 
[swipeRightRecognizer requireGestureRecognizerToFail:pinchRecognizer]; 

,但它不工作。

如果沒有更好的辦法,我打算抓住觸摸的次數。我需要區分單指輕掃和捏。

有沒有簡單的方法,我可以區分捏手勢刷卡?

+0

有點老時尚:怎麼樣在'touchBegan'計數'touches' ? – Raptor

+0

我不太熟悉手勢識別器。只是想知道是否有一個簡單的方法來區分捏與刷卡。如果沒有,這就是我計劃要做的事情,如果沒有簡單的方法,就算倒計時。 – aobs

+0

我已經在下面發佈了更好的方法。 –

回答

0

According to the docsrequireGestureRecognizerToFail:意味着第一手勢只能像正常一樣進行如果第二手勢失敗;所以在這種情況下,由於您沒有指定第二個手勢將失敗的位置,因此第一個手勢將失敗,第二個手勢將按正常方式繼續。這不是你想要的。

相反,你可以使用shouldBeRequiredToFailByGestureRecognizer:UIGestureRecognizerDelegate方法告訴滑動手勢在緊要關頭的情況下失敗,例如:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    if ([gestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]] && 
     [otherGestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]]) { 
     return YES; 
    } 

    return NO; 
} 
+0

我發現一個隱藏的bug不知何故導致捏被幹擾的刷卡。修復了這個錯誤之後,捏和刷卡就能很好地協同工作。無論如何,感謝您的建議。下次我需要使用shouldBeRequiredToFailByGestureRecognizer時,我會記得添加這個UIGestureRecognizerDelegate方法。這當然是一個更好的方法。 – aobs