2011-11-21 17 views
2

このサイトは、UIPmGestureRecognizerを使用してUIImageViewを移動する方法を説明する際に非常に役立ちましたが、移動する必要のあるプログラム1つのUIImageViewと私の人生のために私はそれを行う方法の例を見つけることができません。UIPanGestureRecognizerを使用して2つ以上のUIImageViewsを移動する方法

私はUIPanGestureRecognizerがUIViewに割り当てられていることを理解していますが、UIView内でUIImageViewをパンするのではなく、UIViewで1つのUIImageViewだけをパンするコードを知っています。

ここに私が使用したコードがあります。

- (void)viewDidLoad { 
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(move:)]; 
[panRecognizer setMinimumNumberOfTouches:1]; 
[panRecognizer setMaximumNumberOfTouches:1]; 
[_canvas addGestureRecognizer:panRecognizer]; 

[super viewDidLoad]; } 


-(void)move:(id)sender { 
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:_canvas]; 

if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) { 
    _firstX = [photoImage center].x; 
    _firstY = [photoImage center].y; 
} 

translatedPoint = CGPointMake(_firstX+translatedPoint.x, _firstY+translatedPoint.y); 
[photoImage setCenter:translatedPoint]; } 

私は光画像と呼ばれるUIImageViewをパンが、コードが複数のUIImageViewをパンするどのように見えるかを知ることができます。

ご協力いただきありがとうございます。

答えて

2

_canvasではなく、すべての画像にジェスチャ認識機能を追加する必要があります。これらのビュー

[imageView setUserInteractionEnabled:YES]; 
[imageView addGestureRecognizer:panRecognizer]; 
+0

ご協力ありがとうございます@ヤディン。ここには変更されたコードがありますが、photoImage2 UIImageViewだけがパンするでしょう。 - (ボイド)のviewDidLoad { ... [光画像setUserInteractionEnabled:YES]。 [photoImage2 setUserInteractionEnabled:YES]; [photoImage addGestureRecognizer:panRecognizer]; [photoImage2 addGestureRecognizer:panRecognizer]; ...} - (void)移動:(id)送信者{ ... _firstX = [(UIPanGestureRecognizer *)送信者locationInView:self.view] .x; _firstY = [(UIPanGestureRecognizer *)送信者locationInView:self.view] .y; } ... [(UIPanGestureRecognizer *)送信者ビュー] .center = translatedPoint; } – gobsofrob

+0

UIPanGestureRecognizer * recognizer =(UIPanGestureRecognizer *)送信者。 UIView * selectedView = [レコグナイザビュー]; \t CGPointポイント= [認識プログラム翻訳インビュー:self.view]; \t([認識状態] == UIGestureRecognizerStateBegan)であれば{ \t firstX = selectedView.center.x。 \t firstY = selectedView.center。y; } \t 点= CGPointMake(firstX + point.x、firstY + point.y)。 [selectedView setCenter:point]; \t if([レコグナイザステート] == UIGestureRecognizerStateEnded){ \t [selectedView setCenter:point]; } 私はこのコードを使用し、それは関係なく存在しているどのように多くの意見私のために正常に動作しません – Hanon

0

ためYESにuserInteractionEnabled設定 そしてまた、私はちょうどその正確なアクションを行う人のためのアプリを書かれています。

NSArray *imageViews = @[imageView, imageView2]; 

すると、ちょうどループのために使用して各1を通過:基本的に、あなたがしなければならないすべては、イメージビュー(複数可)を作成し、そのように、NSArrayのに挿入してあります。

for (int i = 0; i < imageViews.count; i++) { 
    [imageViews[i] setUserInteractionEnabled:YES]; 
    [imageViews[i] addGestureRecognizer:panRecognizer]; 
} 

これが動作するために必要なのはこれだけです。上のコードがviewDidLoadメソッドにあることを確認してください。これは、それがあなたのpanGestureを作成する場所だからです。

希望すると便利です。

関連する問題