【问题标题】:UIWebView shows a black screen with no contentUIWebView 显示没有内容的黑屏
【发布时间】:2013-04-06 07:21:04
【问题描述】:

我从 IB 创建了一个 UIWebView 并将其子类化为我的需要。在我的应用程序的某个地方,我正在使用以下代码:

_mainWebView = nil;
_mainWebView = [[MyWebView alloc] initWithFrame:CGRectMake(0,0,320,460)];
_mainWebView.delegate = self;
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[_mainWebView loadRequest:request]; 
NSLog(@"WebView: %@", _mainWebView); //->> WebView: <MyWebView: 0x15403000; baseClass = UIWebView; frame = (0 0; 320 548); layer = <CALayer: 0x1544dac0>>

这给了我一个没有内容的黑屏。

【问题讨论】:

    标签: ios objective-c cocoa-touch uiwebview uikit


    【解决方案1】:

    这很可能是因为您将 _mainWebView 设置为 nil。这几乎意味着你“拔掉”你从 Interface Builder 连接的插座。因此,您在此代码中配置的 Web 视图根本没有连接到屏幕。有两个选项可供您选择:

    1)使用Interface Builder,连接outlets,去掉上面sn-p中的前两行代码。

    2)从Interface Builder中移除web view,移除上面sn-p中的第一行代码,在加载请求前加上[self.view addSubview:_mainWebView];

    顺便说一句,我相信UIWebView 不能被子类化,至少在 App Store 版本中是这样。在未来的 iOS 中,它可能会被破坏......

    希望对你有帮助!

    【讨论】:

    • 值得强调的是:问题中代码中创建的MyWebView和nib中存在的web视图是两个不同的视图。提问者将 nib 中的视图替换为在代码中创建的视图,并且不将后者添加到视图层次结构中(至少,不在问题中包含的代码中)。
    • 另外,nil 的分配是一个红鲱鱼,因为提问者紧接着在同一位置分配了一个实际视图。 nil 的分配甚至可能实际上并未包含在编译器的最终构建输出中。任一分配都会替换 nib 中的视图。
    【解决方案2】:
    _mainWebView = [[MyWebView alloc] initWithFrame:CGRectMake(0,0,320,460)];
    

    上面的代码告诉你创建了一个新的 MyWebView,所有从 IB 连接的连接都会在这里断开。 您可以通过以下方式展示它:

    [self.view addSubview:_mainWebView];
    

    如果你从 IB 中绘制和连接,只需注释掉 init 一个新的

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,

      我的问题是,我放置在情节提要上的 Web 视图跨越了视图控制器的边界。 当我将它拉回视图控制器时,它工作正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多