【问题标题】:Programatically enable/disable pinch to zoom on WKWebView and viewForZoomingInScrollView以编程方式启用/禁用捏合以放大 WKWebView 和 viewForZoomingInScrollView
【发布时间】:2016-04-12 18:22:14
【问题描述】:

我有一个 WKWebView,我想以编程方式启用/禁用双指缩放。

当我想启用双指缩放时,我应该返回什么?

wkWebView!.scrollView 与

中断

'viewForZoomingInScrollView返回的视图:必须是子视图 的滚动视图。它不能是滚动视图本身。'

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {

  if pinchToZoom {
    return ???
  } else {
    return nil
  }
}

【问题讨论】:

    标签: swift wkwebview


    【解决方案1】:
    if (pinchToZoom)
    {
        for (UIView *subScrollView in [scrollView subviews])
        {
            if ([subScrollView isKindOfClass:NSClassFromString(@"WKContentView")])
            {
                return subScrollView;
            }
        }
    
        return nil;
    }
    else
    {
        return nil;
    }
    

    【讨论】:

    • 这使用私有 API,可能会导致 Apple 拒绝您的应用。
    【解决方案2】:

    我的解决方案是仅在禁用缩放时将self 设置为webView.scrollView 的委托,如果启用缩放,则将其重置为nil

    var pinchToZoom: Bool {
        didSet {
            // only set self as delegate when disabling zoom
            webView.scrollView.delegate = pinchToZoom ? nil : self
        }
    }
    
    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
        return nil
    }
    

    这样,一旦设置了pinchToZoom,代理就会更新以启用/禁用缩放。不需要私有 API。希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 2011-03-04
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多