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