【发布时间】:2014-11-10 08:15:10
【问题描述】:
我正在尝试找出如何解决和/或解决 UIWebView 明显加载但随后消失的问题。
在调试器中跟踪后,viewDidAppear:之后webView消失了
内容在屏幕上短暂闪烁然后消失:
为了帮助我追踪,我设置了一些 KVO 来监控 contentSize:
- (void)viewDidLoad
{
[super viewDidLoad];
[self startObservingChangesInView:self.webView];
}
- (void)dealloc {
[self stopObservingChangesInView:self.webView];
}
- (void)startObservingChangesInView:(UIView *)view {
[view addObserver:self forKeyPath:@"contentSize" options:0 context:&kObservingChangesContext];
}
- (void)stopObservingChangesInView:(UIView *)view {
[view removeObserver:self forKeyPath:@"contentSize" context:&kObservingChangesContext];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (context == &kObservingChangesContext) {
UIView *view = object;
NSLog(@"View changed for keypath, '%@': '%@'", keyPath, view.description);
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
额外的上下文
我的 UIWebView 中发生的事情比上面显示的要多,我只是想展示我当前的密钥监控机制。
在某些情况下负载会起作用并保持不变。
作品
在模拟器中运行应用程序
登录
打开菜单
打开网址
不起作用
执行以下步骤时它会停止工作:
在模拟器中运行应用程序
登录
打开菜单
打开网址
注销
登录
打开菜单
打开网址
问题在于,在用户退出应用程序后,我没有保留任何引用。 webView 每次使用UINavigationController 推送时都会创建一个新对象。
那么我该如何解决这个问题呢?要么有一个已知的解决方案,要么有我应该用 KVO 跟踪的变量?
【问题讨论】:
-
您解决了这个问题吗?我有一个非常相似的问题。我的 UIWebView 放置在启用分页的 UIScrollView 内,在用户更改页面后,我的 WebView 也被加载并在 1 秒后。它不见了。
-
加入这个问题 - 这个问题解决了吗?
-
已解决,但遗憾的是我不记得解决方案了。我投票支持@goodfella 的答案,但没有标记为已解决。这通常意味着我认为答案是一个好主意,但它并没有解决问题。也许尝试遵循我的尝试以及唯一的答案,它可能会引导您到某个地方
标签: ios uiwebview key-value-observing