UIWebView 没有响应

Posted

技术标签:

【中文标题】UIWebView 没有响应【英文标题】:UIWebView not responsive 【发布时间】:2009-10-12 02:41:49 【问题描述】:

我在拦截 UIWebView 中的 URL 点击时遇到了问题。我已经阅读并发现最常见的问题是链接有一个 target="_blank" 属性可以在新窗口中打开,但我的没有这样的属性。 URL 的格式为“/word”,其中 word 是任意词。必要时,我还会使用 %20 对它们进行编码。我的 UIWebViewDelegate 类甚至没有收到 shouldStartLoadWithRequest: 事件,什么也没发生。我也尝试在 html 中插入一个按钮,但这些按钮也没有响应。

还有其他规则来管理 UIWebView 将承认哪些 URL?我尝试过使用绝对 URL(甚至只是“http://www.google.com”),并且只用一个有效的谷歌链接替换整个 HTML 字符串,但都无济于事。真正奇怪的是,我可以找到一个可以工作的链接——它可以被点击,我成功地捕捉到了这个事件,但似乎(我看起来很努力)包含这个链接的 HTML 和其他。

鉴于我是 iPhone 平台的新手,我认为我很可能在做一些更根本性的错误。应用程序的流程如下所示:主视图是一个 UITableViewController,它允许用户从单词列表中进行选择。当一个词被选中时,一个新的 UIViewController 被创建并推送到屏幕上。这是带有 UIWebView 的视图,它显示从 SQLite 数据库加载的数据。下面是一些相关的代码。

//move from the UITableViewController to UIViewController with UIWebView
DetailViewController *viewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
...
[self.navigationController pushViewController:viewController animated:YES];

//load HTML and display it in a UIWebView
NSString *output = [NSString stringWithFormat:@"%@%@%@",header,definition,footer];
[definitionView loadHTMLString:output baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];

任何帮助将不胜感激 - 用这个把我的头发拉了一段时间。

【问题讨论】:

您是否尝试过使用其他 baseURL?比如假的 http:// URL? 【参考方案1】:

你应该看看PhoneGap:http://phonegap.com/

PhoneGap 正是这样做的(基本上它是一个巨大的 UIWebViewDelegate,它使得为 iPhone 编写能够利用相机、GPS、加速度计等的 javascript 应用程序成为可能)。下载源代码,打开“iphone”文件夹中的PhoneGap.xcodeproj,查看PhoneGapDelegate 类。这是 UIWebViewDelegate 的一个很好的示例用法,很难找到更好的示例 :) 它当然有效。

【讨论】:

以上是关于UIWebView 没有响应的主要内容,如果未能解决你的问题,请参考以下文章

UIWebView 捕获响应标头

响应者链(UItableViewCell 内的 UIWebView)Objective-C

UIWebview 和 UIScrollview

在 iOS Swift 3 中以编程方式添加 Web 视图时如何在 UIWebView 中获取响应状态代码?

确定 UIWebView 是不是处理事件

Https、uiwebview 和导出合规性