【发布时间】:2010-12-03 08:20:53
【问题描述】:
我使用UIWebView 实现了基本的网络浏览器。我注意到对于某些页面,没有调用任何 UIWebViewDelegate 方法。
发生这种情况的示例页面是:http://www.youtube.com/user/google。以下是重现问题的步骤(确保在控制器的 UIWebViewDelegate 方法中插入 NSLog 调用):
- 将上述 youtube URL 加载到
UIWebView[请注意,在页面加载时,UIWebViewDelegate方法确实会被调用] - 触摸页面上的“上传”类别
- 触摸该类别中的任何视频 [问题:注意加载了一个新页面,但没有调用任何 UIWebView 委托]
我知道这不是 UIWebView 的委托设置不正确的问题,因为在加载其他链接时会调用委托方法(例如,如果您尝试单击将您带到 youtube 之外的链接,你会注意到委托方法被调用)。
我最初的直觉是,这可能是因为页面是使用 AJAX 加载的,它可能不会调用委托方法。但是后来我检查了iPhone的Safari,并没有出现这个问题,所以一定是我这边出了问题。
我还注意到 Three20 的 TTWebController 与我遇到的问题完全相同。
但由此问题引发的问题是,如果没有调用委托方法,我无法更新 UI 以在加载新请求时启用/禁用后退和前进浏览按钮。
知道为什么会发生这种情况,或者我该如何解决它以在发出新请求时更新 UI?
【问题讨论】:
-
我开始认为这可能是一个 iOS 错误?
-
我不在我的 Mac ATM 上尝试这个问题,但有趣的是你提到它发生在某个视频页面上。难道是页面保持打开连接以进行流式传输?我建议您尝试使用页面 URL 进行 NSURLRrquest,并查看加载 HTML 数据后连接是否关闭。
-
嘿,你解决过这个问题吗?我正在玩 m.youtube.com,这是一场噩梦。
标签: iphone uiwebview uiwebviewdelegate