3

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

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

4

3 回答 3

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

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

[self.view addSubview:_mainWebView];

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

于 2013-04-13T23:23:24.943 回答
1

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

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

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

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

我希望这可以帮助你!

于 2013-04-13T23:06:34.067 回答
0

我遇到了同样的问题,

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

于 2016-08-11T10:38:50.490 回答