2013-01-23 79 views
0

嗨我在我的項目中使用了UIPanGestureRecognizer。我用下面的代碼來處理UIPanGestureRecognizer如何在父視圖中限制UIPanGestureRecognizer

- (void)handlePan:(UIPanGestureRecognizer *)recognizer { 

     CGPoint translation = [recognizer translationInView:self]; 
     CGFloat newX = MIN(recognizer.view.frame.origin.x + translation.x, self.frame.size.width - recognizer.view.frame.size.width); 
     CGRect newFrame = CGRectMake(newX,recognizer.view.frame.origin.y, recognizer.view.frame.size.width, recognizer.view.frame.size.height); 
     recognizer.view.frame = newFrame; 
     [recognizer setTranslation:CGPointZero inView:self]; 
} 

enter image description here

我已經在我的項目一個兩個視圖是父視圖(紅色視圖),另一種是子視圖(綠色視圖)。我的要求是我需要在父視圖中平移子視圖。我的handlePan方法工作正常,但唯一的問題是它允許在左側超出限制。它在右側完美地工作。我需要在代碼中更改請幫助我。

回答

0

您應該檢查UIGestureRecognizerDelegate

實施- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch並返回NO,當你不想要的手勢識別接收到觸摸事件。

此方法在touchesBegan之前調用:withEvent:在 手勢識別器上調用以獲得新觸摸。

+0

感謝您的迴應,當這種方法將被稱爲? – thavasidurai

+0

將實現此方法的對象設置爲手勢識別器的代表。應該在識別器處理觸摸事件之前調用它。如果返回NO,那麼觸摸事件將被手勢識別器 –

+0

忽略,它將只在調用過程之前調用一次? – thavasidurai

相關問題