iOS UIWebView在加载后消失

时间:2014-11-10 08:15:11

标签: ios uiwebview key-value-observing

我正在试图弄清楚如何解决和/或解决UIWebView明显加载但随后消失的问题。

在调试器中跟踪后,webView在viewDidAppear:

之后消失

内容在屏幕上短暂闪烁然后消失:

enter image description here

为了帮助我追踪,我已经设置了一些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中的内容比上面显示的更多,我只想展示我当前监控密钥的机制。

在某些情况下,负载会起作用并停留。

作品

在模拟器中运行应用程序
登录
打开菜单
打开网址

不起作用

按照以下步骤停止工作:

在模拟器中运行应用程序
登录
打开菜单
打开网址
注销
登录
打开菜单
打开网址

问题是我在将用户退出应用程序后没有抓住任何引用。每次使用UINavigationController推送webView时,都会创建一个新对象。

那么我该如何解决这个问题呢?要么有一个已知的解决方案,要么可能存在我应该跟KVO追踪的变量?

2 个答案:

答案 0 :(得分:1)

检查应用程序某处是否未从视图层次结构中删除WebView。我有类似的问题,我注意到我无意中从某个事件处理程序中的视图层次结构中删除了我的WebView。

答案 1 :(得分:0)

我遇到了类似的问题。但我的设置问题是我在 Launchscreen.storyboard 中初始化UI和视图,而不是 Main.storyboard 。由于Launchscreen.storyboard的性质,它会在消失之前显示我的视图一段时间。将视图放在Main.storyboard中可以解决问题。