【问题标题】:iOS UIWebView disappears after loadingiOS UIWebView 加载后消失
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 你能给我一些关于如何做到这一点的见解或链接吗?
  • 检查指向您的 WebView 的链接的存储位置。在应用程序转换到帐户屏幕后,您是否 100% 确定您对它有强烈的参考。也许您的某些代码无意中从视图层次结构中删除了 WebView。洞察力是这样的:在您完全更改屏幕时(而不是在转换时),WebView 被删除。所以,如果你使用 UINavigationController,我认为一个好主意是查看位于 navigationController:didShowViewController:animated: 委托方法中的代码,如果你有的话。
  • 另一种选择是尝试 Xcode Debug View Hierarchy 工具,看看你的 WebView 在它消失后是否就位。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多