2016-04-08 19 views
0

UILabelsubviewにあり、は、にpanGesturepinchGestureを持っています。現在、私はUILabelをすべてのビューに渡すことができます。私はこのUILabelsubViewの領域内にとどまりたいと思っています。どうすればこれを達成できますか?この行でUIPangestureに境界を追加する

- (void)handlePanGesture:(UIPanGestureRecognizer *)panGesture { 
CGPoint translation = [panGesture translationInView:panGesture.view.superview]; 

if (UIGestureRecognizerStateBegan == panGesture.state ||UIGestureRecognizerStateChanged == panGesture.state) { 
    panGesture.view.center = CGPointMake(panGesture.view.center.x + translation.x, 
             panGesture.view.center.y + translation.y); 
    [panGesture setTranslation:CGPointZero inView:self.view]; 
} 
} 

CGPoint translation = [panGesture translationInView:panGesture.view.superview]; 

それはスーパーにそれを設定していると私は私のサブビューに設定しようとしていますが、私はそれを把握するように見えることはできません。ここで

答えて

1

は、ドラッグ可能なボタンを処理し、メインビューの境界 にそれを制限するために私のコードである私は、このコードはあなたに助けて

CGPoint translation = [recognizer translationInView:self.view]; 
    CGRect recognizerFrame = recognizer.view.frame; 
    recognizerFrame.origin.x += translation.x; 
    recognizerFrame.origin.y += translation.y; 

    // Check if UIImageView is completely inside its superView 
    if (CGRectContainsRect(self.view.bounds, recognizerFrame)) { 
     recognizer.view.frame = recognizerFrame; 
    } 
    // Else check if UIImageView is vertically and/or horizontally outside of its 
    // superView. If yes, then set UImageView's frame accordingly. 
    // This is required so that when user pans rapidly then it provides smooth translation. 
    else { 
     // Check vertically 
     if (recognizerFrame.origin.y < self.view.bounds.origin.y) { 
      recognizerFrame.origin.y = 0; 
     } 
     else if (recognizerFrame.origin.y + recognizerFrame.size.height > self.view.bounds.size.height) { 
      recognizerFrame.origin.y = self.view.bounds.size.height - recognizerFrame.size.height; 
     } 

     // Check horizantally 
     if (recognizerFrame.origin.x < self.view.bounds.origin.x) { 
      recognizerFrame.origin.x = 0; 
     } 
     else if (recognizerFrame.origin.x + recognizerFrame.size.width > self.view.bounds.size.width) { 
      recognizerFrame.origin.x = self.view.bounds.size.width - recognizerFrame.size.width; 
     } 
    } 

    // Reset translation so that on next pan recognition 
    // we get correct translation value 
    [recognizer setTranslation:CGPointZero inView:self.view]; 
+0

感謝を助けることを願っています。これを私自身のコードにどうやって実装できるか理解してもらえますか? – Ro4ch

+0

働いていただきありがとうございました! – Ro4ch

関連する問題