wkwebview除了白色屏幕外没有显示任何内容

时间:2016-05-04 02:40:23

标签: ios wkwebview

我尝试使用WKWebView方法在另一个视图上显示presentViewController,但只显示白屏。

我在ViewController.m中实现了WKWebView,如下所示:

- (void)viewDidLoad {
  [super viewDidLoad];
  WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
  _webView = [[WKWebView alloc] initWithFrame:self.view.frame
                                 configuration:configuration];
  _webView.navigationDelegate = self;
  [_webView loadRequest:[NSURLRequest requestWithURL:url]];
  [self.view addSubview:_webView];
}

然后在另一个类中我有一个带有以下代码的方法:

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
ViewController *webView1 =[[ViewController alloc] init];

[delegate.window.rootViewController presentViewController: webView1 
                                                 animated:YES completion:nil]; 

这最后一个代码"呈现"我的rootViewController顶部有一个白色屏幕。我不知道为什么我的webView是白屏。

2 个答案:

答案 0 :(得分:0)

您要加载哪个URL?

可能是您需要向plist文件添加权限才能加载不安全的URL。

将此添加到您的plist中,看看是否可行。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

有关更多信息,请参见此处: https://ooiks.com/2017/10/15/ios-wkwebview-return-a-blank-screen-white-screen/

还要确保您尝试的URL使用HTTP或HTTPS。确保UIApplication.shared.canOpenURL(url : URL(string: yourURLString))返回URL的true

答案 1 :(得分:-2)

所以,我发现为什么它只是显示一个白色的屏幕。事实证明,你必须用WKWebView包裹UINavigationController

添加:

UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController: _webView];

到我的自定义类中的自定义方法,然后显示我刚创建的controller而不是_webView

 [delegate.window.rootViewController presentViewController: controller animated:YES completion:nil];

现在工作正常。