- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在多个 View Controller 中使用 UIWebViews
的应用程序。 UIWebViews
用于渲染本地生成的 html,无需缓慢的网络访问。
为了节省内存,我仅根据 viewcontroller viewWillAppear
回调的提示按需加载这些内容。 (并卸载屏幕外实例以响应 didReceiveMemoryWarning
消息。)
问题在于,用户看到正在渲染的 html,有时还伴随着样式的闪烁和其他各种令人不快的工件。我更希望渲染在屏幕外完成,并在准备好时显示完全渲染的 View 。
如果能够让 viewWillAppear
在 UIWebView 完全呈现之前不返回,那就太简洁了。但如何呢?
我通过向 UIWebView 发送一条 loadHTMLString:baseURL:
消息来告诉它要渲染什么。这是异步的,一段时间(很快)之后,webview 的委托(delegate)会被回调 webViewDidFinishLoad
。
我尝试在 viewWillAppear
内运行 runloop,运行 NSDefaultRunLoopMode
或 UITrackingRunLoopMode
。这在模拟器中有效(它向日志提示
[CATransaction synchronize] called within transaction
但确实有效),但在设备上它会死锁,webViewDidFinishLoad
永远不会被调用。
(此外,似乎 UIWebView
加载属性不起作用。至少,在我调用 loadHTMLString:baseURL:
之后且在获取回调之前,它不是 true .)
最佳答案
我认为这里有很多解决方案。一种快速方法是加载 UIWebView,并将其隐藏属性设置为 YES。然后将您的 UIViewController 设置为 UIWebViews 委托(delegate)并实现:
- (void)webViewDidFinishLoad:(UIWebView *)webView
将属性设置回 NO。
需要注意的是,如果您有框架/嵌入内容,webViewDidFinishLoad 将多次触发。所以你必须跟踪这一点。如果您加载本地内容,那应该不是问题。
关于iphone - 推迟 viewWillAppear 直到 webViewDidFinishLoad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/933414/
我有一个简单的 IB View ,其中仅包含一个 UIWebView 和一个 UIButton。 webView 被保留,连接,而不是 nil,委托(delegate)属性 os 也被连接, Cont
有人对 UIWebViewDelegate 上何时调用 webViewDidFinishLoad 有准确的了解吗?我读过它会在每个 iframe 中触发一次(如果存在的话),但我担心它相对于 DOM
在我的应用程序中,我试图在加载 UIWebView 时显示初始图像,因此它不仅仅是一个空白屏幕。但是我的 webViewDidFinishLoad 方法不起作用。这意味着一旦 UIWebView 加载
我有一个包含 UIWebView 的 IB #import @interface PostFunHorosViewController : UIViewController{ } @property
有双重发布的风险(我发现并研究过类似的问题,但答案似乎对我不起作用): 在我的 ViewController.h 中我有这个: @interface ViewController : UIViewCo
我刚刚注意到 webViewDidFinishLoad 方法阻塞了整个应用程序,所以我什至无法触摸任何按钮。 我需要解析 UIWebView 的结果页面,这可能会花费很多时间。那么在不阻塞整个应用程序
我正在尝试在我的 webViewDidFinishLoad 中完成加载页面时运行代码。但是,如果我在我的 UIWebView 中访问 google.com,然后输入搜索,第一个查询有效,但所有其他搜索
我有一个 UIWebView 并希望在它加载时显示一个事件指示器。然后在 webViewDidFinishLoading 时隐藏它。唯一的问题是我收到此 NSURLErrorDomain 错误 -99
长期以来,我一直在成功地使用 webView 委托(delegate)。但最近我遇到了这个代表的奇怪问题。在我当前的项目中,我试图从 webview 访问我的路由器。我仅在 URL 内传递用户名和密码
( swift 、iOS8、Xcode6、iPhone/iPad) webViewDidFinishLoad 没有被调用,没有触发,也没有工作。 是的,我已将包含 View Controller 设置
在我的 webViewDidFinishLoad 方法中,我有以下代码: - (void)webViewDidFinishLoad:(UIWebView *)webView { if (h
我有一个 UIWebView,我想在加载链接后使其可见。它是隐藏的,在需要显示之前一切正常。我确信我可以使 UIWebView 再次可见,因为我在调用 URL 之后放置了它。我确信当 UIWebVie
我需要在表格 View 的单元格中加载 HTML。我使用 UIWebView 而不是 UILabel 以便解释 html 标签。WebView 的大小不同,所以我这样做 - (void)webView
我试图通过在加载页面时隐藏 webView 来在不同网页的加载之间进行转换。但是,我发现一些图像密集型网站导致 webViewDidFinishLoading 过早触发,当我在此时显示 webView
我正在尝试制作一个 IOS 应用程序以在 WebView 中显示网站。 没关系,它正在工作。现在我正在尝试检测页面加载结束。 那是我的代码: class ViewController: UIViewC
一切正常,但有时 uiwebview 没有完成加载。我想有时 uiwebview 等待响应的时间比不完成加载要长。有人遇到过熟悉的问题吗? 是的,我已经实现了下一个方法: - (void)webVie
我在 webViewDidFinishLoad 委托(delegate)方法中有一些代码,我需要一些方法来告诉我这段代码已经在我的代码的完全不同部分的另一个方法中完成执行。这可能吗?基本上我想做的是这
我发现很难在 webViewDidFinishLoad 中运行一次警报,这是第一次,当应用程序打开并且 webViewDidFinishLoad 完成加载时。问题是,我使用 webview 并且它经常
我有一个初始化 webView 的 bool 条件,并且在 webViewDidFinishLoad 中加载另一个委托(delegate)以在完成完成后触发。但是,由于 bool 值先于条件“webV
我正在使用 Phonegap2.1。我的 AppDelegate.m 文件中有 webViewDidFinishLoad 方法。它曾经在以前的 phonegap 版本中被自己调用。现在,它根本不会被调
我是一名优秀的程序员,十分优秀!