2012-01-11 13 views
0

iPhoneアプリでドラッグドロップをしようとしています。私はビューの複数のレイヤーを含むメインビューを持っています。iPhoneアプリ:ドラッグドロップUIImageView

私が置か:メインビューで

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event  

をが、これは呼び出されません。ユーザーが最初にタッチしたときにサムネイル画像をビューに読み込むことができます。 UIImageViewをドラッグしようとしましたが、touchesMoved:は呼び出されていません。ここ

はいくつかのコードです:(これは、ユーザーがビューに触れると、それはロードロードされ、カーソルundernethに配置され、ドラッグイメージです)

[dragImage addTarget:self action:@selector(endDrag) forControlEvents:UIControlEventTouchUpOutside]; 
[dragImage addTarget:self action:@selector(endDrag) forControlEvents:UIControlEventTouchUpInside]; 
[dragImage addTarget:self action:@selector(endDrag) forControlEvents:UIControlEventTouchDragInside]; 
+0

を?これはUIViewControllerではなくUIViewControllerのメソッドであることを覚えておいてください。 – Saphrosit

+0

自分自身に好意を持ち、GestureRecognizer – vikingosegundo

+0

を使用します。ViewControllerレベルにあります。イベントは、私がマウスを押し下げている間、画面から離れて画面に戻った後にのみ発砲しています。私はそれがdragImage.Center = pointでmoouseの下にドラッグイメージを置くことと関係があると考えています。何かがイベントを食べていて、それをバブリングしていません。もしtouchesMoveが起動しない場合、dragImageがDragInsideイベントを発生させても問題ありません。しかし、どちらも発射していません – Arcadian

答えて

1

これは私が画像をドラッグするために行うものです画面周り:

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; 
[panRecognizer setMinimumNumberOfTouches:1]; 
[panRecognizer setMaximumNumberOfTouches:1]; 
[panRecognizer setDelegate:self]; 
[imageView_ addGestureRecognizer:panRecognizer]; 

そして:あなたは何ができるか

-(void)move:(id)sender { 

    CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view]; 

    if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) { 

     firstX = [[sender view] center].x; 
     firstY = [[sender view] center].y; 
    } 

    translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y); 
    [[sender view] setCenter:translatedPoint]; 

} 
+0

[touchesこのアプローチのサンプルコードを参照](http://developer.apple.com/library/ios/samplecode/Touches/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007435) – vikingosegundo

+0

私はあなたのコードと同じ結果。もう一度触れた後でしか画像をドラッグできません。私はそれを最もよく説明する方法を知らない。 – Arcadian

+0

とサンプルコードを実行する場合は? – vikingosegundo

1

はUIImageView insidを置いていますe UIControl(UIControlEventTouchDragInsideに応答します)。

UIControl *dragImageControl = [[UIControl alloc] initWithFrame:dragImageView.frame]; 
     [dragImageControl addSubview:dragImageView]; 

[self.view addSubview:dragImageControl]; 

[dragImageControl addTarget:self action:@selector(imageTouch:withEvent:) forControlEvents:UIControlEventTouchDown]; 
[dragImageControl addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside]; 

とimageMovedで、あなたはこのコードを持つことができます: `:あなたは` touchesMoveを実装しました

- (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event 
{ 
    CGPoint point = [[[event allTouches] anyObject] locationInView:self.view]; 
    UIControl *control = sender; 
    control.center = point; 
} 
関連する問題