2

このサイトは、UIPanGestureRecognizer を使用して UIImageView を移動する方法を説明するのに非常に役立ちましたが、複数の UIImageView を移動 (つまり、パン) する必要があるプログラムがあり、一生見つけることができません。それを行う方法の例。

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]; }

photoImage という名前の UIImageView をパンできますが、複数の UIImageView をパンするコードがどのようになるかはわかっています。

よろしくお願いいたします。

4

2 に答える 2

2

_canvas の代わりに、すべての画像にジェスチャ レコグナイザーを追加する必要があります。また、これらのビューに対して userInteractionEnabled を YES に設定します

[imageView setUserInteractionEnabled:YES];
[imageView addGestureRecognizer:panRecognizer];
于 2011-11-21T13:56:44.840 に答える
0

私はちょうどその正確なアクションを行う人のためにアプリを書きました。基本的に、画像ビューを作成し、それらを NSArray に挿入するだけです。

NSArray *imageViews = @[imageView, imageView2];

次に、for ループを使用してそれぞれを調べます。

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

このアクションを機能させるために必要なのはそれだけです。panGesture を作成する場所であるため、上記のコードが viewDidLoad メソッドにあることを確認してください。

お役に立てれば!

于 2014-06-19T23:19:16.617 に答える