2011-04-07 58 views
0

我正試圖實現滾動菜單的效果。如果用戶單次滑動(在任何方向),我將爲每次滑動移動一個項目。使用UISwipeGestureReconizer這種方式工作得很好,但如果用戶持續按住屏幕上的手指,我想保持滾動直到手指擡起。UIGestureRecognizer輕掃並按住

看來我想結合UISwipeGestureRecognizerUILongPressGestureRecognizer來完成此操作。成功滑動(UISwipeGestureRecognizer)後,啓用UILongPressGestureRecognizer並開始滾動,直到手指擡起(UILongPressGestureRecognizer結束)。

問題是UILongPressGestureRecognizer事件在成功刷卡後不會發生。

這裏有一個例子:

// Create single swipe recognizer to recognize right swipes 
swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleSwipeFrom:)]; 
swipeRecognizer.delegate = self; 
[_gestureView addGestureRecognizer:swipeRecognizer]; 
[swipeRecognizer release]; 

// Create long press recognizer to recognize right press and holds 
longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeAndHoldFrom:)]; 
longPressRecognizer.delegate = self; 
[longPressRecognizer setMinimumPressDuration:0.5]; 
[longPressRecognizer setEnabled:NO]; 
[_gestureView addGestureRecognizer:longPressRecognizer]; 
[longPressRecognizer release]; 

- (void)handleSingleSwipeFrom:(UISwipeGestureRecognizer *)recognizer { 

    if ([recognizer state] == UIGestureRecognizerStateEnded) { 
     // Move one item in direction based on recognizer.direction 
     [_longPressGestureRecognizer setEnabled:YES]; 
    } 
} 

如果我把我的手指輕掃後在屏幕上,不會被調用的UILongPressGestureRecognizer事件。有關我如何完成此任何想法?

+0

看一看在回答這個問題的SO:http://stackoverflow.com/questions/3468648/how-do-i-chain-two-uigesturerecognizers-together – 2011-04-07 18:25:41

+0

你有沒有想出解決出來嗎?我得到和你一樣的行爲。 – 2012-06-24 20:50:20

回答

0

嘗試實施UIGestureRecognizerDelegate並使用此方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    return YES; 
} 

這將允許兩個同時運行。您需要將代碼添加到手柄刷卡並保留方法,以確保只在滑動完成後才能運行。

乾杯

+0

我已經這麼做了。我爲此(delegate = self)設置了UISwipeGestureRecognizer和UILongPressGestureRecognizer設置,併爲每個識別器成功調用它,並返回YES。我也沒有啓用長按直到刷卡結束(它也有一個延遲) – avenged 2011-04-07 18:50:19