1

UIPinchGestureRecognizer を実装しようとしている pdf ベースのアプリケーションに取り組んでいます。ユーザーが 640,960 のデフォルト ビュー サイズに達したときに、ピンチ オフ機能を制限したいと考えています。

私の現在の実装では、ユーザーは無限にピンチイン/ピンチアウトできます。

- (void)pinchZoom:(UIPinchGestureRecognizer *)gestureRecognizer
{
    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {

        if (!zoomActive) {
            zoomActive = YES;

            UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panMove:)];
            [panGesture setMaximumNumberOfTouches:2];
            [panGesture setDelegate:self];
            [self addGestureRecognizer:panGesture];
            [panGesture release];

        }

        [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);

        [delegate leavesView:self zoomingCurrentView:[gestureRecognizer scale]];            

        [gestureRecognizer setScale:1];


    }
}  

    // This method will handle the PAN / MOVE gesture 
- (void)panMove:(UIPanGestureRecognizer *)gestureRecognizer    
{
    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {  
        CGPoint translation = [gestureRecognizer translationInView:[[gestureRecognizer view] superview]];  
        [[gestureRecognizer view] setCenter:CGPointMake([[gestureRecognizer view] center].x + translation.x, [[gestureRecognizer view] center].y + translation.y)];  
        [gestureRecognizer setTranslation:CGPointZero inView:[[gestureRecognizer view] superview]];   
    }  
}

これは私が話しているデフォルトのビューサイズ/スケールです:デフォルトpdf

これは私が望んでいない、またはピンチアウトで制限したいものです:
無限ピンチアウト

なにか提案を?

4

2 に答える 2

3

ハンドラー関数の下限を自分で処理するのはどうですか? このようなもの:

- (void)pinchZoom:(UIPinchGestureRecognizer *)gestureRecognizer {

     ....

    if ( [gestureRecognizer scale] > MIN_SCALE )
        [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
  ...
于 2012-06-04T15:06:44.333 に答える
2

ジェスチャレコグナイザーの内部では、PDF ビューの現在の縮尺/サイズをテストして理解する必要があります。フルスクリーンを使用しているときに縮小しないでください。

于 2012-06-04T15:08:06.253 に答える