2

我有一個UIViewUIPanGestureRecognizer附加到它。 我還有一個UIView內有多個UISwipeGestureRecognizers的對象。UIPanGestureRecognizer重疊UISwipeGestureRecognizer

UIPanGestureRecognizerUISwipeGestureRecognizers與對象重疊相關聯。

有沒有什麼辦法讓UIPanGestureRecognizer完全忽略UIView的某個區域或使物體的UISwipeGestureRecognizers佔先,並覆蓋UIView'sUIPanGestureRecognizer

回答

2

解決使用該委託的方法這個問題:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
     if ([touch.view isKindOfClass:[UIButton class]] && gestureRecognizer == recognizer) return NO; 
     return YES; 
} 

感謝您指出我在正確的方向@MikeS

4

你想要的是什麼......

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    if(gestureRecognizer == myPanGesture) return NO; 

    return YES; 
} 

或者說委託方法類似用途。它是UIGestureRecognizerDelegate協議的一部分。如果您正在刷卡,這將使您無法識別平移。

+0

其他建議?我注意到在該方法的文檔中它說:「...返回NO不能保證防止同時識別,因爲另一個手勢的代表可能會返回YES」。有什麼我應該做的與我的代表不同? – tylercasson 2012-08-01 20:56:23

1

非常感謝您的答案,這讓我與我的問題。

我想和大家分享我的解決方案,因爲它可以幫助:

-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{ 
NSLog2(@"Gesture on Class %@ tag %i", [touch.view class], touch.view.tag);//////// 

if (touch.view.tag == kTagToIgnoreGestures){ 
    return NO; 
} 
return YES; 

}

我定義了一個kTagToIgnoreGestures這是意見認爲應該忽略手勢標籤。 這樣我可以在UIGestureRecognizer的視圖中有2個子視圖,只有其中一個會受到手勢的影響。

希望它有幫助。 Shefy