2013-01-17 23 views
2

我的目標是通過向上或向下平移手勢設置iPhone的亮度。如果有一個簡單的方法來確定鍋的方向,我無法弄清楚。我添加了一個滑動手勢識別,然後將以下代碼:如何確定UIPanGesture的方向(向上或向下)?

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

但我的鍋:方法似乎永遠能夠確定盤的方向。我已將「自我」設置爲兩個手勢識別器的代表。接下來的代碼是我最近的許多不同的嘗試。 (它淘洗下來的時候精美的作品 - 畫面變暗慢或更快一些,這取決於向下平移的速度。)

- (IBAction)downSwipe:(UISwipeGestureRecognizer *)recognizer // 1/16/13 
{ 
    NSLog (@"downSwipe"); 
    if ((recognizer.state == UIGestureRecognizerStateChanged) || 
    (recognizer.state == UIGestureRecognizerStateEnded)) 
    { 
    NSLog (@"downSwipe in downSwipe"); 
    self.brightness = self.brightness -.1; 
    NSLog (@"Going Down"); 
    } 
} 

- (IBAction)upSwipe:(UISwipeGestureRecognizer *)recognizer // 1/16/13 
{ 
    NSLog (@"upSwipe"); 
    if ((recognizer.state == UIGestureRecognizerStateChanged) || 
    (recognizer.state == UIGestureRecognizerStateEnded)) 
    { 
     NSLog (@"upSwipe in upSwipe"); 
     self.brightness = self.brightness +.1; 
     NSLog (@"Going UP"); 
    } 
} 

- (void)pan:(UIPanGestureRecognizer *)recognizer // 1/12/13 
{ 

if ((recognizer.state == UIGestureRecognizerStateChanged) || 
    (recognizer.state == UIGestureRecognizerStateEnded)) 
    { 
    if (UISwipeGestureRecognizerDirectionDown) 
    { 
     NSLog (@"downSwipe in pan"); 
     self.brightness = self.brightness -.005; 
     NSLog (@"Going DOWN in pan"); 
    } 
    else if (UISwipeGestureRecognizerDirectionUp) 
    { 
     NSLog (@"upSwipe in pan"); 
     self.brightness = self.brightness +.005; 
     NSLog (@"Going UP in pan"); 
    } 
    } 
}  

下面的輸出代表的約半英寸的連續向上平移。 (潘:不正確地認爲這是一個向下的鍋。)

2013-01-17 17:49:57.774 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.783 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.794 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.801 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.811 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.818 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.832 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.839 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.848 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.855 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.864 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.871 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.881 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.887 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.896 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.903 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.910 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.919 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.929 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.935 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.945 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.951 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.960 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:57.966 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:57.998 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:58.004 SeriousPanicButton[9426:707] Going DOWN in pan 
2013-01-17 17:49:58.022 SeriousPanicButton[9426:707] downSwipe in pan 
2013-01-17 17:49:58.030 SeriousPanicButton[9426:707] Going DOWN in pan 

Obviously this if statement is not working: 

if (UISwipeGestureRecognizerDirectionDown) 

我希望我沒有比它真的更難。以某種方式能夠確定平移手勢的方向(向上或向下),而不必甚至打擾滑動手勢將會更清晰。

任何幫助將不勝感激。

回答

18

堅持不懈。我自己找到了答案。 下面是確定是平移還是平移的代碼。如果你想知道方向是左還是右,只需更改if語句來測試velocity.x。

- (void)pan:(UIPanGestureRecognizer *)recognizer // 1/18/13 
{ 
if ((recognizer.state == UIGestureRecognizerStateChanged) || 
    (recognizer.state == UIGestureRecognizerStateEnded)) 
{ 
    CGPoint velocity = [recognizer velocityInView:self.view]; 

    if (velocity.y >0) // panning down 
    { 
     self.brightness = self.brightness -.02; 
    //  NSLog (@"Decreasing brigntness in pan"); 
    } 
    else    // panning up 
    { 
    self.brightness = self.brightness +.02; 
    // NSLog (@"Increasing brigntness in pan"); 
    } 
} 
}