我正在尝试创建一个浮动的WKWebview。我希望用户可以在所有其他ViewControllers上与WKwebview交互,这就是为什么我把它放在第二个UIWindow中。问题是它不接收来自UIWindow的任何触摸事件(滚动、平移、捏合或点击,没有任何效果)。
在CustomUIWindow的init方法上,我添加了浮动的WKWebView及其ParanViewController。
init(frame: CGRect,
statusBarStyle: UIStatusBarStyle,
viewController:FloatableViewController) {
self.floatingWindowRootViewController = viewController
super.init(frame: frame)
self.rootViewController = floatingWindowRootViewController
self.addSubview(viewController.floatingView)
self.bringSubviewToFront(viewController.floatingView)
}
我在网上搜索了一下,大部分的建议都是把触摸事件发送到subview。所以我在我自定义的UIWindow中覆盖了这两个函数。
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
for subView in subviews {
if subView is WKWebView {
return subView.hitTest(self.convert(point, to: subView), with: event) != nil
}
}
return false
}
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if self.point(inside: point, with: event) {
self.pointInsideCalled = true
return floatingWindowRootViewController?.floatingView
}
if pointInsideCalled {
self.pointInsideCalled = false
return floatingWindowRootViewController?.floatingView
}
return nil
}
在我的浮动WKWebView上,我没有显式添加任何手势识别器,它被设置为isUserInteractionEnabled = true。我还可以看到我的UIWindow正在接收触摸事件。问题是我如何将触摸事件发送到我的浮动WKWebView。
1条答案
按热度按时间hfyxw5xn1#
我不确定这是否回答了上面的问题(这是旧的现在),也没有人试图解决我的问题....我想要一个WKWebView互动,但我也希望能够跟踪触摸。与此代码,我可以跟踪正常的开始,移动,结束触摸事件。代码使用一些自定义类,所以你不能直接复制/粘贴。我不使用故事板。在场景代理我有:
我的窗口:
}
注意:MWebView只包含一个WKWebView,外加一些逻辑。