32

UIScrollView を使用しているときにズームを一時的にオフにする方法を知っている人はいますか?

以下を使用してスクロールを無効にできることがわかりました。

self.scrollView.scrollEnabled = false;

しかし、ズーム用の同様のコマンドは見当たりません。何かご意見は?

4

10 に答える 10

48

ユーザーがジェスチャでズームする機能を無効にしたい場合、iOS 5 以降ではピンチ ジェスチャを無効にできます。これにより、コードからスクロールビューを制御できます...

scrollView.pinchGestureRecognizer.enabled = NO;

パンも同様に...

scrollView.panGestureRecognizer.enabled = NO;

これは- (void)viewDidAppear:(BOOL)animated後で呼び出す必要があります。そうしないと、システムによって有効にリセットされます。

Swift 4.x 以降:

imageZoomView.pinchGestureRecognizer?.isEnabled=/

于 2013-12-18T23:35:20.137 に答える
30

上記の fbrereto のアドバイスに従って、lockZoom と unlockZoom の 2 つの関数を作成しました。ズームをロックするときに、最大ズーム スケールと最小ズーム スケールを変数にコピーし、最大ズーム スケールと最小ズーム スケールを 1.0 に設定しました。ズームのロックを解除すると、プロセスが逆になります。

-(void)lockZoom
{
    maximumZoomScale = self.scrollView.maximumZoomScale;
    minimumZoomScale = self.scrollView.minimumZoomScale;

    self.scrollView.maximumZoomScale = 1.0;
    self.scrollView.minimumZoomScale = 1.0;
}

-(void)unlockZoom
{

    self.scrollView.maximumZoomScale = maximumZoomScale;
    self.scrollView.minimumZoomScale = minimumZoomScale;

}
于 2009-10-13T17:17:32.243 に答える
17

また、UIScrollViewDelegate のズーム ビューとして "nil" を返すこともできます。

- (UIView *) viewForZoomingInScrollView:(UIScrollView *) scrollView
{
    return canZoom?view:nil;
}
于 2011-03-18T21:11:51.533 に答える
11

設定minimumZoomScaleを確認してくださいmaximumZoomScaleドキュメントによると:

maximumZoomScaleminimumZoomScaleズームを有効にするには、よりも大きくする必要があります。

したがって、値を同じに設定すると、ズームが無効になります。

于 2009-10-13T17:00:32.040 に答える
2

ここでは、スクロールビューでズームを停止するための私のソリューションです。

self.scrollView.minimumZoomScale=self.scrollView.maximumZoomScale;
于 2015-07-02T10:52:25.393 に答える
2

これは非常に古い質問であることは知っていますが、目的のために少し変更しました。

scrollView.minimumZoomScale == scrollView.maximumZoomScaleズームが実際に有効/無効になっているかどうかを比較することなく、ズームが実際に有効/無効になっているかどうかを簡単に判断できるようにしたいと考えていました。

だから私はこれをやった

// .h
@property (assign, nonatomic, getter=isZoomEnabled) BOOL zoomEnabled;

// .m
@synthesize zoomEnabled = _zoomEnabled;

- (void)setZoomEnabled:(BOOL)zoomEnabled;
{
  _zoomEnabled = zoomEnabled;

  UIScrollView *scrollView = self.scrollView;

  if (zoomEnabled) {
    scrollView.minimumZoomScale = self.minimumZoomScale;
    scrollView.maximumZoomScale = self.maximumZoomScale;
  } else {
    scrollView.minimumZoomScale = 0.0f;
    scrollView.maximumZoomScale = 0.0f;
  }
}

との値はself.minimumZoomScaleself.maximumZoomScaleの設定時に設定されUIScrollViewます。

これにより、ズームが有効かどうかを設定/尋ねることができます。

myViewController.zoomEnabled = YES;
myViewController.isZoomEnabled;
于 2011-12-10T18:53:29.220 に答える
1

スクロール ビューの 2 本指とダブルタップをオフにする必要があります

self.scrollView.delegate = self

extension YourViewController: UIScrollViewDelegate {
   func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
       scrollView.pinchGestureRecognizer?.isEnabled = false
   }

   func viewForZooming(in scrollView: UIScrollView) -> UIView? {
       return nil
   }
}
于 2021-03-06T03:18:27.770 に答える
0

ピンチ ジェスチャによるズームのみを無効にしたい場合は、以下のコードでうまくいきます。

scrollView.pinchGestureRecognizer?.requireGestureRecognizerToFail(scrollView.panGestureRecognizer)
于 2015-11-05T05:11:37.167 に答える