UIWebView显示没有内容的黑屏

时间:2013-04-13 22:52:13

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

我已经从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>>

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

3 个答案:

答案 0 :(得分:1)

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

1)使用Interface Builder,连接插座,并删除上面代码段中的前两行代码。

2)从Interface Builder中删除Web视图,删除上面代码段中的第一行代码,然后在加载请求之前添加[self.view addSubview:_mainWebView];

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

我希望这可以帮到你!

答案 1 :(得分:1)

_mainWebView = [[MyWebView alloc] initWithFrame:CGRectMake(0,0,320,460)];

上面的代码行告诉你创建一个新的MyWebView,所有来自IB的挂钩都将断开连接。 您可以通过以下方式显示:

[self.view addSubview:_mainWebView];

如果您从IB绘制并挂钩,只需注释掉init一个新的

答案 2 :(得分:0)

我遇到了同样的问题,

我的问题是,我放在故事板上的网页视图正在跨越视图控制器的边框。 当我把它拉回视图控制器时它工作正常。