在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! 为我工作!