在UIScrollView中关闭缩放

Cod*_*nts 31 iphone zoom zooming uiscrollview ios

有没有人知道在使用UIScrollView时暂时关闭缩放的方法?

我看到你可以使用以下方法禁用滚动:

self.scrollView.scrollEnabled = false;
Run Code Online (Sandbox Code Playgroud)

但我没有看到类似的缩放命令.有什么想法吗?

com*_*ial 43

如果要禁用用户缩放手势的功能,那么在iOS 5及更高版本中,您可以禁用捏合手势.这仍然允许您从代码控制滚动视图...

scrollView.pinchGestureRecognizer.enabled = NO;
Run Code Online (Sandbox Code Playgroud)

同样适用于锅...

scrollView.panGestureRecognizer.enabled = NO;
Run Code Online (Sandbox Code Playgroud)

必须在之后- (void)viewDidAppear:(BOOL)animated或之后调用此方法,否则系统会将其重置为启用.


Cod*_*nts 29

按照上面的fbrereto的建议,我创建了两个函数lockZoom和unlockZoom.锁定Zoom时,我将最大和最小缩放比例复制到变量,然后将最大和最小缩放比例设置为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;

}
Run Code Online (Sandbox Code Playgroud)


小智 16

您也可以在UIScrollViewDelegate中返回"nil"作为缩放视图:

- (UIView *) viewForZoomingInScrollView:(UIScrollView *) scrollView
{
    return canZoom?view:nil;
}
Run Code Online (Sandbox Code Playgroud)


fbr*_*eto 10

检查设置minimumZoomScalemaximumZoomScale; 根据文件:

maximumZoomScale必须大于minimumZoomScale启用缩放.

因此,将值设置为相同应禁用缩放.

  • 我在故事板中将max和min都设置为1,但我的scrollView仍然缩放. (5认同)

小智 5

我试过设置minimumZoomScalemaximumZoomScale属性UIScrollViewto1isMultipleTouchEnabled属性UIViewtofalse或 return nilfrom viewForZooming(in:)ofUIScrollViewDelegate但没有奏效。就我而言,经过多次反复试验,以下在我的情况下有效[在 iOS 10.3 上测试]:

class MyViewController: UIViewController {
   var webView: WKWebView?

   override viewDidLoad() {
      super.viewDidLoad()

      //...
      self.webView.scrollView.delegate = self
      //...
   }
}

extension MyViewController: UIScrollViewDelegate { 
   func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
      scrollView.pinchGestureRecognizer?.isEnabled = false
   }
}
Run Code Online (Sandbox Code Playgroud)