6

ピンチが最小ズーム制限を超えてズームアウトされ、元に戻ろうとしているときに通知を受けようとしていますUIScrollViewが、非常に難しいと感じています. メソッドだけでこれを行う方法はありますか、それともタッチ処理delegateをオーバーライドする必要がありますか?UIScrollView's

4

4 に答える 4

11

を使用scrollViewDidZoom:して確認してくださいscrollView.zoomBouncing == YES。次に、 を使用zoomScaleして、ビューが跳ね返る方向を特定します。

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    if (scrollView.zoomBouncing) {
        if (scrollView.zoomScale == scrollView.maximumZoomScale) {
            NSLog(@"Bouncing back from maximum zoom");
        }
        else
        if (scrollView.zoomScale == scrollView.minimumZoomScale) {
            NSLog(@"Bouncing back from minimum zoom");
        }
    }
}
于 2013-12-16T13:45:49.980 に答える
2

UIScrollView のscrollViewDidZoomデリゲート メソッドを使用して、アニメーション化しようとしている瞬間を検出できます。ビューがピンチされている間、scrollView.zoomScaleドロップダウンが表示されます。scrollView.minimumZoomScaleその後、ユーザーが指を離すとすぐに、 , butscrollViewDidZoomでもう一度呼び出されます。scrollView.zoomScale == scrollView.minimumZoomScalescrollView.zooming == NO

この瞬間をキャプチャすることは問題ありませんが、跳ね返って最小のZoomScaleアニメーションを回避するために何かをしようとすると、私にとって本当に奇妙な副作用があるようです. :(

于 2011-03-04T04:17:12.917 に答える
0

でやったUIPinchGestureRecognizer

-(void)viewDidLoad{
    UIPinchGestureRecognizer *gestureRecognizer = 
     [[[UIPinchGestureRecognizer alloc] initWithTarget:self 
                                                action:@selector(pinched:)] 
                                                               autorelease];
    gestureRecognizer.delegate=self;
    [self.scrollView addGestureRecognizer:gestureRecognizer];
    //your code
}
-(void)pinched:(UIPinchGestureRecognizer*)gestureRecognizer{
    if(gestureRecognizer.state==UIGestureRecognizerStateEnded){
        //pinch ended
        NSLog(@"scale: %f",scrollView.zoomScale);
    }
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
        shouldRecognizeSimultaneouslyWithGestureRecognizer:
                          (UIGestureRecognizer *)otherGestureRecognizer{
    return YES;
}
于 2013-01-12T14:10:06.613 に答える