13.3.3 WKUIDelegate

13.3.3 WKUIDelegate

除了WKNavigationDelegate之外,WKWebView还提供了一个WKUIDelegate协议。这个协议更多用于在webView中和用户产生交互,或者展示时产生了事件进行的函数回调。下面是这些函数的介绍:

这个函数需要创建一个新的webView作为返回值,传入的参数包括调用这个函数的webView以及需要创建这个webView所需的配置configuration、跳转的动作navigationAction和窗口的特性windowFeature。需要注意的是,如果我们设置了WKWebView中的UIDelegate,但是满足这个协议的实例没有实现这个函数,那么在需要创建新的webView的应用场景下,WKWebView将取消新页面的跳转。

通知应用已经成功地关闭了某个webView,我们应该在这个回调函数中将跟这个webView相关的视图从视图层级中移除。

在webView中使用JavaScript展示了一个警告窗口,会回调这个函数。值得注意的是,如果不实现这个函数,webView将默认为用户选择OK。因为这个弹窗只有一个OK按钮可以按,所以一定要在满足WKUIDelegate协议的实例中实现这个函数,并弹出警示框。

在webView中使用JavaScript展示了一个确认窗口,会回调这个函数。值得注意的是,如果不实现这个函数,webView将默认为用户选择取消。实现这个函数之后,需要弹出一个确认框,能够让用户选择确认或者取消。

在webView中使用JavaScript展示了一个输入窗口,会回调这个函数。值得注意的是,如果不实现这个函数,webView将默认为用户选择取消。实现这个函数之后,需要弹出一个输入框,能够让用户进行输入,并且可以选择确认或者取消。

iOS 10.0版本之后,为了提升webView的用户体验,增加了三个用于预览元素的回调函数。有兴趣的读者可以根据苹果的官方文档进行实践,网址是https://developer.apple.com/documentation/webkit/wkuidelegate。