以编程方式启用/禁用WKWebView上的捏合缩放和viewForZoomingInScrollView

3

我有一个WKWebView,我想编程地启用/禁用捏合缩放。

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

wkWebView!.scrollView出现错误:

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

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

  if pinchToZoom {
    return ???
  } else {
    return nil
  }
}
2个回答

0
if (pinchToZoom)
{
    for (UIView *subScrollView in [scrollView subviews])
    {
        if ([subScrollView isKindOfClass:NSClassFromString(@"WKContentView")])
        {
            return subScrollView;
        }
    }

    return nil;
}
else
{
    return nil;
}

这个使用了私有API,可能导致苹果拒绝你的应用。 - Dylan Hand

0
我的解决方案是仅在禁用缩放时将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。希望这可以帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接