Swift 以编程方式启用/禁用pinch以缩放WKWebView和viewForZoomingInScrollView
我有一个WKWebView,我想通过编程启用/禁用“收缩”缩放 当我想启用“收缩到缩放”时,我应该返回什么 wkWebView!。scrollView与 '从viewForZoomingInScrollView:返回的视图必须是子视图 滚动视图的一部分。它不能是滚动视图本身。”Swift 以编程方式启用/禁用pinch以缩放WKWebView和viewForZoomingInScrollView,swift,wkwebview,Swift,Wkwebview,我有一个WKWebView,我想通过编程启用/禁用“收缩”缩放 当我想启用“收缩到缩放”时,我应该返回什么 wkWebView!。scrollView与 '从viewForZoomingInScrollView:返回的视图必须是子视图 滚动视图的一部分。它不能是滚动视图本身。” 我的解决方案是将self设置为webView。仅当禁用缩放时才将scrollView的委托,如果启用了缩放,则将其重置为nil var pinchToZoom: Bool { didSet { /
我的解决方案是将
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。希望这有帮助 这使用私有API,可能导致苹果拒绝您的应用程序。
if (pinchToZoom)
{
for (UIView *subScrollView in [scrollView subviews])
{
if ([subScrollView isKindOfClass:NSClassFromString(@"WKContentView")])
{
return subScrollView;
}
}
return nil;
}
else
{
return 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
}