禁用 WKWebView 缩放
Disable WKWebView zooming
我有一个 WKWebView
,我想禁用缩放。为此,我实现了 UIScrollViewDelegate viewForZooming(_:)
委托函数,其中我 return nil
如下所示:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return nil
}
不知何故 WKWebView
在我捏合时仍然会缩放,我不想要这种效果。
我已将 WKWebView isMultipleTouchEnabled
设置为 false
但这仍然不会禁用缩放。
唯一禁用缩放的方法是将 isUserInteractionEnabled
设置为 false
,但这样我就无法与 WKWebView
中的链接进行交互,这不是我想要的。
这是我声明我的对象及其设置方式的方式
private lazy var webView: WKWebView = {
// script to fit the content with the screen
var scriptContent = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"
let wkuscript = WKUserScript(source: scriptContent, injectionTime: WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: true)
let wkucontroller = WKUserContentController()
wkucontroller.addUserScript(wkuscript)
let wkwebconfig = WKWebViewConfiguration()
wkwebconfig.userContentController = wkucontroller
wkwebconfig.preferences.setValue(true, forKey: "developerExtrasEnabled")
let wv = WKWebView(frame: .zero, configuration: wkwebconfig)
wv.frame.size.height = 1
wv.isOpaque = false
wv.backgroundColor = .clear
wv.scrollView.backgroundColor = Theme.collectionViewBackgroundColor
return wv
}()
fileprivate func setupWKWebView() {
addSubview(webView)
webView.anchor(top: topAnchor, left: leftAnchor, bottom: bottomAnchor, right: rightAnchor, paddingTop: 0, paddinfLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
webView.scrollView.delegate = self
webView.navigationDelegate = self
}
任何提示可能是什么原因造成的?
请尝试禁用缩放手势。
func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
scrollView.pinchGestureRecognizer?.isEnabled = false
}
我有一个 WKWebView
,我想禁用缩放。为此,我实现了 UIScrollViewDelegate viewForZooming(_:)
委托函数,其中我 return nil
如下所示:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return nil
}
不知何故 WKWebView
在我捏合时仍然会缩放,我不想要这种效果。
我已将 WKWebView isMultipleTouchEnabled
设置为 false
但这仍然不会禁用缩放。
唯一禁用缩放的方法是将 isUserInteractionEnabled
设置为 false
,但这样我就无法与 WKWebView
中的链接进行交互,这不是我想要的。
这是我声明我的对象及其设置方式的方式
private lazy var webView: WKWebView = {
// script to fit the content with the screen
var scriptContent = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"
let wkuscript = WKUserScript(source: scriptContent, injectionTime: WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: true)
let wkucontroller = WKUserContentController()
wkucontroller.addUserScript(wkuscript)
let wkwebconfig = WKWebViewConfiguration()
wkwebconfig.userContentController = wkucontroller
wkwebconfig.preferences.setValue(true, forKey: "developerExtrasEnabled")
let wv = WKWebView(frame: .zero, configuration: wkwebconfig)
wv.frame.size.height = 1
wv.isOpaque = false
wv.backgroundColor = .clear
wv.scrollView.backgroundColor = Theme.collectionViewBackgroundColor
return wv
}()
fileprivate func setupWKWebView() {
addSubview(webView)
webView.anchor(top: topAnchor, left: leftAnchor, bottom: bottomAnchor, right: rightAnchor, paddingTop: 0, paddinfLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
webView.scrollView.delegate = self
webView.navigationDelegate = self
}
任何提示可能是什么原因造成的?
请尝试禁用缩放手势。
func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
scrollView.pinchGestureRecognizer?.isEnabled = false
}