2013-07-03 98 views
1

從我已經從H2CO3回答了這個問題Detecting the direction of PAN gesture in iOS知道,您可以通過使用檢測UIPanGestureRecognizer向左或向右移動:使用UILongPressGestureRecognizer檢測左右移動?

CGPoint vel = [gesture velocityInView:self.view]; 
if (vel.x > 0) 
{ 
    // user dragged towards the right 
} 
else 
{ 
    // user dragged towards the left 
} 

我想要檢測向左或向右移動時,用戶點擊並按住類似按鈕當用戶輸入UIGestureRecognizerStateChanged狀態時,通過使用UILongPressGestureRecognizer來編碼上面的代碼,但似乎我不能簡單地使用velocityInView來使事情在我的情況下工作。

任何人都可以幫到我嗎?

回答

6

首先將識別器的allowableMovement設置爲較大的值(默認情況下爲10像素)。並使用下面的代碼

-(void)longPressed:(UILongPressGestureRecognizer*)g 
{ 
    if (g.state == UIGestureRecognizerStateBegan) { 
     _initial = [g locationInView:self.view]; // _initial is instance var of type CGPoint 
    } 
    else if (g.state == UIGestureRecognizerStateChanged) 
    { 
     CGPoint p = [g locationInView:self.view]; 
     double dx = p.x - _initial.x; 
     if (dx > 0) { 
      NSLog(@"Finger moved to the right"); 
     } 
     else { 
      NSLog(@"Finger moved to the left"); 
     } 
    } 
} 

注意UILongPressGestureRecognizer是連續的,所以你會得到數倍UIGestureRecognizerStateChanged。如果您只需要用戶舉起手指時收到一條通知,請使用UIGestureRecognizerStateEnded

+0

優秀!此代碼運行良好。 –

+0

不客氣。我沒有測試它btw =) –