以编程方式启用/禁用捏合以放大 WKWebView 和 viewForZoomingInScrollView
Posted
技术标签:
【中文标题】以编程方式启用/禁用捏合以放大 WKWebView 和 viewForZoomingInScrollView【英文标题】:Programatically enable/disable pinch to zoom on WKWebView and viewForZoomingInScrollView 【发布时间】:2016-04-12 18:22:14 【问题描述】:我有一个 WKWebView,我想以编程方式启用/禁用双指缩放。
当我想启用双指缩放时,我应该返回什么?
wkWebView!.scrollView 与
中断'viewForZoomingInScrollView返回的视图:必须是子视图 的滚动视图。它不能是滚动视图本身。'
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView?
if pinchToZoom
return ???
else
return nil
【问题讨论】:
【参考方案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。希望这会有所帮助!
【讨论】:
以上是关于以编程方式启用/禁用捏合以放大 WKWebView 和 viewForZoomingInScrollView的主要内容,如果未能解决你的问题,请参考以下文章