在iOS 8下启用了“引导访问”的UIWebView中点击链接时显示警报

我写了一个相当基本的iOS应用程序,通过UIWebView元素使用网页内容。 应用程序需要在“引导访问”模式下运行,因为它在面向客户的零售环境中运行。

在iOS 7下,一切正常,但自从更新到iOS 8后,几乎每次浏览网页上的链接时,都会在屏幕的顶部显示“引导访问已启用,三次点击退出”button。

我已经尝试从头开始创build一个新的应用程序,只有一个UIWebView元素,并且问题仍然存在。 我已经提交了一个苹果的错误,但我急于寻求一种方法来解决这个问题,使警报不再显示给客户。

我已经find了解决方法,谢谢Kiosk Pro App的Chris。

您需要将导航types为“UIWebViewNavigationTypeLinkClicked”的所有请求(仅当引导访问处于打开状态时)转换为导航types“UIWebViewNavigationTypeOther”

解决此问题的一个问题是引导访问消息仍显示为使用types“表单提交”和“表单重新提交”的链接。 尝试转换这些types可能会导致加载页面时出错。

这里是来自Adaptive Channel的Blandine的一个实现:

在该方法中:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 

只需添加:

 if (UIAccessibilityIsGuidedAccessEnabled()) { if (navigationType == UIWebViewNavigationTypeLinkClicked ) { navigationType = UIWebViewNavigationTypeOther; [webView loadRequest:request]; return NO; } } 

希望能帮助到你。

我终于find了一个解决方法:从UIWebView迁移到WKWebView! 为我工作!

Interesting Posts