2016-12-08 13 views
0

親ビューでビューを移動したいビューを移動するのにUIPanGestureRecognizerを使用しています。私は以下のコードを使用しています。Pangestureを使用して親ビュー内のUIViewを移動

-(void)move:(UIPanGestureRecognizer *)recognizer { 
    CGPoint touchLocation = [recognizer locationInView:self.customeView]; 

    self.view.center = touchLocation; 
} 

translInInViewではなくviewを移動するためにlocationInViewを使用します。誰かがlocationInViewを使って親ビューでビューを移動する方法を教えてもらえますか?

+0

を試すことができますか?それとも、動かすのか? –

+0

translationInViewを使用しているので、私はlocationInViewを使用しています。 – Uttam

答えて

0

あなたは親ビューにサブビューからドラッグ可能なビューの座標を変換する問題であり、この

@interface ViewController() 
@property (weak, nonatomic) IBOutlet UIView *panView; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    //self.panView = self.panView -> self.view . self.panView is direct child of self.view 

    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; 
    [self.panView addGestureRecognizer:panRecognizer]; 


    // Do any additional setup after loading the view, typically from a nib. 
} 

-(void)move:(UIPanGestureRecognizer *)recognizer { 
    CGPoint centerPoint = [recognizer locationInView:self.view]; 
    self.panView.center = centerPoint; 
} 
} 
2

あなたはUIPanGestureRecognizerで正しいトラックにいます。開始と終了のジェスチャ状態の処理が不足している可能性があります。ここでは、サンプルプロジェクト(Swift)にまとめた完全なソリューションを、viewコントローラのルートビューのサブクラスとしてpanViewとともに示します。

class ViewController: UIViewController { 

    @IBOutlet weak var panView: UIView! 

    // records the view's center for use as an offset while dragging 
    var viewCenter: CGPoint! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     panView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.dragView))) 
    } 

    func dragView(gesture: UIPanGestureRecognizer) { 
     let target = gesture.view! 

     switch gesture.state { 
     case .began, .ended: 
      viewCenter = target.center 
     case .changed: 
      let translation = gesture.translation(in: self.view) 
      target.center = CGPoint(x: viewCenter!.x + translation.x, y: viewCenter!.y + translation.y) 
     default: break 
     } 
    } 

} 
+0

@Kyle Cleggさん、ありがとうございますが、私はUIPanGestureRecognizerメソッド内でlocationInViewを使いたいと思います。上記のコードでは翻訳を使用しています – Uttam

関連する問題