我想检测用户何时按下iOS网页视图中加载的HTML网页中存在的网络表单按钮(理想情况下使用WKWebView)。 这可能吗?如果是,如何?
一般评论:
我知道WKWebView有一些限制,因此如果您知道一个与WKWebView一起使用的方法,请分享它。如果您知道一个适用于UIWebView的方法,请分享该方法,我可以将其用作开始为我的基于WKWebView的应用程序找到解决方案。
答案 0 :(得分:3)
要使用WKWebView执行此操作,您需要符合WKNavigationDelegate,并设置webView的navigationDelegate
。
您可能正在寻找的方法是- webView:decidePolicyForNavigationAction:decisionHandler:
,您可以在其中确定是否允许链接触摸。您可以从navigationAction.request.URL
获取目标网址。
一个简单的例子:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
if ([navigationAction.request.URL.relativeString hasPrefix:kLocalContentPrefix])
{
// Show some local content
// Don't let the webview load this URL.
decisionHandler(WKNavigationActionPolicyCancel);
}
else
{
// Allow the webview to load this URL.
decisionHandler(WKNavigationActionPolicyAllow);
}
}
要在UIWebView中执行此操作,它几乎相同,只是您只需符合UIWebViewDelegate中的-(BOOL)webView:shouldStartLoadWithRequest:navigationType:
即可。但我建议尽可能使用Webkit!
答案 1 :(得分:0)
有一种解决方法,由shazron在Objective-C中展示https://github.com/shazron/WKWebViewFIleUrlTest将文件复制到/ tmp / www并从那里加载。