5

次のコード スニペットを使用して、uiimageview をドラッグ アンド ドロップしています。

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

-(void)move:(id)sender {

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

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

        firstX = [myImageView  center].x;
        firstY = [myImageView  center].y;
    }

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

}

このコードは myImageView 全体をドラッグしますが、私の要件は、uiimage をドラッグして別の uiimagview にドロップすることです。myImageView は、ドラッグした後もそのままにしておく必要があります。どんなアイデアでも大歓迎です。

4

2 に答える 2

6

私はあなたの成果を達成するために少し努力しました。それを試してみてください

Step 1:ファイルでこの 3 つの変数を定義し.hます

UIImageView *ivSource1, *ivDestination2, *tempIV;

Step 2: 3 つすべてを初期化し、 write it inメソッドUIImageViewに追加します。ViewControllerviewDidLoad

ivSource1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]];
[ivSource1 setFrame:CGRectMake(100, 100, 100, 100)];
[ivSource1 setTag:100];
[ivSource1 setUserInteractionEnabled:YES];    
[self.view addSubview:ivSource1];

ivDestination2 = [[UIImageView alloc] init];
[ivDestination2 setFrame:CGRectMake(200, 300, 100, 100)];
[ivDestination2 setTag:101];
[ivDestination2 setUserInteractionEnabled:YES];
[self.view addSubview:ivDestination2];

tempIV = [[UIImageView alloc] init];
[tempIV setFrame:CGRectMake(0, 300, 100, 100)];
[tempIV setTag:102];
[tempIV setUserInteractionEnabled:YES];
[self.view addSubview:tempIV];

Step 3: ドラッグ アンド ドロップの画像の移動を処理するために、次のタッチ メソッドを定義します。

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

    if([[touch view] tag] == 100)
    {
        [tempIV setImage:ivSource1.image];
        [tempIV setCenter:[touch locationInView:self.view]];
    }
}

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

    [tempIV setCenter:[touch locationInView:self.view]];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    [tempIV setCenter:[touch locationInView:self.view]];

    if(CGRectContainsPoint(ivDestination2.frame, [touch locationInView:self.view]))
    {
        [ivDestination2 setImage:tempIV.image];
    }
    // Remove image from dragable view
    [tempIV setImage:[UIImage imageNamed:@""]];    
}
于 2013-05-15T19:01:03.177 に答える