2

UIScrollView にサブビューを追加しました。スクロールビューにズームインすると、サブビューをパンしたいと思います。

ではtouchesBegan:、タッチの最初の位置を取得してtouchesMoved:から、サブビューをどれだけ移動するかを決定できます。zoomscaleが 1.0 のときに完全に機能します。ただし、ズームすると、移動しようとしているサブビューからポインターが「飛び出します」(ここの図 - ポインターの位置はマーキー ツールとして示されています)。

ビューの中心は、現在の位置ではなく、ポインターの位置にある必要があります! px および py 変数は、サブビューのどこがクリックされても、ポインターの位置をドラッグしても常に同じままであることを保証します。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:self];
    location.x = location.x * self.zoomScale;
    location.y = location.y * self.zoomScale;
    px = location.x;
    py = location.y;
    if ([touch view] == rotateView) {
        self.scrollEnabled = NO;
        return;
    }
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:self];
    location.x = location.x * self.zoomScale;
    location.y = location.y * self.zoomScale;
    if ([touch view] == rotateView) {
        rotateView.center = CGPointMake(rotateView.center.x + (location.x - px), rotateView.center.y + (location.y - py));
        px = location.x;
        py = location.y;
        return;
    }

    }

4

1 に答える 1

1

あなたが取っているアプローチの代わりに、サブビューを別の UIScrollView にして、パンを処理させます。

scrollEnabled = NO(ズームが発生するまで、サブビューに設定したい場合があります。)

于 2013-11-04T10:47:20.600 に答える