0

touchesmoved メソッドを使用して画面上に画像をドラッグするための多くのチュートリアルを実行しましたが、それらのほとんどは動的に作成された画像ビュー用ではありません

私のプロジェクトでは、プログラムで5つのUIImageviewを作成しました。

今、私はユーザーが画面上でそれらをドラッグできるようにしたい>>私もこの回答の 質問に従いますが、すべて無駄で、これまでのところ成功していません>

動的なイメージビューを作成するためのコードは

for (int i = 0; i < index ; i++) 
{
UIImageView *imageView1 = [[UIImageView alloc] initWithImage:
[UIImageimageNamed:image_name]];        
self.imageView1.userInteractionEnabled = YES;
imageView1.frame = CGRectMake(xvalue, yvalue, 80.0f, 80.0f);
self.view.userInteractionEnabled = YES;
[self.view addSubview:imageView1];
}

事前に良い返信をありがとう

4

2 に答える 2

0

この問題に対処する方法はたくさんあります。UIImageView の作成時に UIPanGestureRecognizer を各 UIImageView に追加するか、自分自身で touchesBegan:、touchesMoved: を使用して (UIViewController であると仮定)、各 UIImageView をトラバースして、そのフレームにタッチ ポイントが含まれているかどうかを確認できます。

于 2013-02-14T12:43:28.430 に答える
0

forループを使用しているが静的な名前を使用しているため、UIImageViewsの作成方法に少し混乱しています。したがって、「imageView1」という名前の UIImageView が 15 個あるとします。とにかく、リンク先の質問のコードを使用している場合、これはまったく問題になりません。おそらく、行の順序を間違えています...これが正しい順序です。(うまくいかない場合は、発生するエラーとともにお知らせください)

//-(void)ViewDidLoad? {???? is this your function??
    int xvalue = 0;//?? not sure where you declared these
    int yvalue = 0;//?? not sure where you declared these
    for (int i = 0; i < index ; i++) {
        UIImageView *imageView1 = [[UIImageView alloc] initWithImage:
        [UIImageimageNamed:image_name]];        
        self.imageView1.userInteractionEnabled = YES;
        imageView1.frame = CGRectMake(xvalue, yvalue, 80.0f, 80.0f);
        self.view.userInteractionEnabled = YES;
        [self.view addSubview:imageView1];
    }

    self.elements=[myElements getElements];
    imagesElements = [[NSMutableArray alloc]init];
    for(ElemetsList *item in self.elements) {
            UIImageView *oneelement = [[UIImageView alloc] initWithImage:[UIImage imageNamed:item.imgElement]];
            oneelement.frame = CGRectMake(item.positionX, item.positionY, item.width, item.height);
            oneelement.userInteractionEnabled=YES;
            [imagesElements addObject:oneelement];
    }

    for(UIImageView *img in imagesElements) {
        [self.view addSubview:img];
    }
//}? End Function, whatever it may be...?

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event allTouches] anyObject];

    for(UIImageView *img in imagesElements) 
    {  
        if([self view] == img)
        {
            CGPoint location = [touch locationInView:self.view];
            img.center=location;
        }
    }
}

1 つの画像の移動をハードコーディングしたいだけの場合は、次のようにしてください。

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    imageView1.center=[touch locationInView:self.view];
}
于 2013-02-14T12:43:35.523 に答える