0

サブビューとして固定数のサムネイル画像が追加されたスクロール ビューがあります。これらの画像をタッチに沿って別のビューの長方形に移動したいと思います。スクロールビューに沿って (つまり、同じビューに沿って) 画像を移動することはできますが、別のビューに移動することはできません。タッチ位置に応じて画像の中心を変更しています。スクロールビューのフレームを超えてタッチポイントが増えると、画像が消えます。これは私の問題です

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

        CGPoint location = [touch locationInView: self];
        NSLog(@"%f,%f",location.x,location.y);
        touch.view.center = location;

    }

この問題の解決策は、私にとって大きな助けになります!!!

詳細は画像を参照してください ここに画像の説明を入力

4

1 に答える 1

1

これが私がすることです:

handlePan:次のメソッドをアクションとして使用して、各画像に panGestureRecognizer を追加します。正しい imageView ( myImageView) を取得する方法を理解する必要がありますが、これにより画像が指に追従するようになります。

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {

    // Find the correct image you're dragging
    // UIImageView *myImageview = ...

    CGPoint translation = [recognizer translationInView:self.view];

    if (recognizer.state == UIGestureRecognizerStateEnded) {
        // What to do when you start the gesture
        // You may also define myImageView here
        // (if so, make sure you put it in @interface,
        // because this method will be called multiple times,
        // but you will enter this "if" only when you start the touch)
    }

    // Keep your image in the screen
    if (myImageView.frame.origin.x + translation.x >= 0.0f &&
        myImageView.frame.origin.x + myImageView.frame.size.width + translation.x <= 320.0f &&
        myImageView.frame.origin.y + translation.y >= 0.0f &&
        myImageView.frame.origin.y + myImageView.frame.size.height + translation.y <= 480.0f) {

        myImageView.center = CGPointMake(myImageView.center.x + translation.x, 
                                         myImageView.center.y + translation.y);

    }

    if (recognizer.state == UIGestureRecognizerStateEnded) {
        // What to do when you remove your finger from the screen
    }

    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
于 2012-10-29T10:40:00.773 に答える