我有一个自定义键盘,带有宽度和高度的WKWebView.我已经通过wkWebView禁用了滚动!.scrollView.scrollEnabled = false但是我仍然在WKWebView底部双击时有一个奇怪的滚动行为.这里是我尝试加载的简单网页的源代码:
http://is.gd/gt8h2q(非常简单,只是带有背景绿色和一行文本的div全屏).下面是GIF的解释.以下是我创建WKWebView的方法:
class KeyboardViewController: UIInputViewController,WKScriptMessageHandler { var wkWebView: WKWebView? override func loadView() { super.loadView() let contentController = WKUserContentController() contentController.addScriptMessageHandler(self,name:"callbackTestOne") let config = WKWebViewConfiguration() config.userContentController = contentController self.wkWebView = WKWebView(frame:self.view.frame,configuration:config) self.view = self.wkWebView! } override func viewDidLoad() { super.viewDidLoad() (...) wkWebView!.scrollView.bounces = false wkWebView!.scrollView.scrollEnabled = false wkWebView!.scrollView.backgroundColor = UIColor(red:248,green:248,blue:248,alpha:1) wkWebView!.scrollView.opaque = true wkWebView!.scrollView.showsHorizontalScrollIndicator = false wkWebView!.scrollView.showsverticalScrollIndicator = false wkWebView!.scrollView.decelerationRate = UIScrollViewDecelerationRatenormal } (...)
我有类似的问题,并找到了解决方案.也就是说,删除负责不当行为的UITapGestureRecognizer.
WKWebView,或更确切地说是WKWebView中包含的UIScrollView及其子视图,添加了许多手势识别器.因此,您可以轻松地迭代视图中的所有识别器并删除所需的识别器.
如果要从webView中删除所有单指双击识别器,则需要在滚动视图的子视图内搜索.您可以执行以下操作:
// iterate over all subviews of the WKWebView's scrollView for subview in _webView.scrollView.subviews { // iterate over recognizers of subview for recognizer in subview.gestureRecognizers ?? [] { // check the recognizer is a UITapGestureRecognizer if recognizer.isKind(of: UITapGestureRecognizer.self) { // cast the UIGestureRecognizer as UITapGestureRecognizer let tapRecognizer = recognizer as! UITapGestureRecognizer // check if it is a 1-finger double-tap if tapRecognizer.numberOfTapsrequired == 2 && tapRecognizer.numberOftouchesrequired == 1 { // remove the recognizer subview.removeGestureRecognizer(recognizer) } } } }
这应该可以解决您的问题.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。