Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios WKWebView使用特定的web配置挂起本地网页加载。_Ios_Objective C_Webview_Wkwebview - Fatal编程技术网

Ios WKWebView使用特定的web配置挂起本地网页加载。

Ios WKWebView使用特定的web配置挂起本地网页加载。,ios,objective-c,webview,wkwebview,Ios,Objective C,Webview,Wkwebview,我有一个WKWebView,它使用WKWebViewConfiguration加载一组本地网页,以将@“allowFileAccessFromFileURLs”的配置设置为true 请求设置如下: NSURL *url = [[NSBundle mainBundle] URLForResource:@"testPage" withExtension:@"html" subdirectory:@"html/pages"]; NSURLRequest *req = [[NSURLRequest al

我有一个WKWebView,它使用
WKWebViewConfiguration
加载一组本地网页,以将
@“allowFileAccessFromFileURLs”
的配置设置为true

请求设置如下:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"testPage" withExtension:@"html" subdirectory:@"html/pages"];
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10.0f];
然后使用以下WKWebview方法发送请求:

- (nullable WKNavigation *)loadRequest:(NSURLRequest *)request;
我的问题是设备有当前连接,但没有网络流量。作为屏幕上的一个元素,webview将添加到屏幕中,并发出请求,但webview将在显示本地内容之前显示约50秒的白色屏幕

当没有设置链接调节器时,无论网络状态如何,webview中的所有内容都会加载,因为它是本地加载的

例如,如果设备连接到无线网络,但网络链路调节器设置为100%损耗。创建webview并发送请求以加载本地内容,从而触发加载挂起

我有一个想法,可能是WKWebView试图在后台进行某种验证,这需要网络事务,但我在safari webview中使用仪器进行了一些网络分析,还记录了一些时间线,我看不到任何会导致它挂起的东西

我能想到它在50秒左右后加载本地内容的唯一原因是它遇到了某种WKWebView超时来加载网络连接


任何帮助都将不胜感激,谢谢

好吧,对于其他偶然发现这一点的人,我已经发现我做错了什么

问题不在于WKWebview或web内容本身,而在于我如何处理webview加载的完成

在方法中:

- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{
我通过评估一些JS来倾听事件的完成情况,如:

-(void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation
{

    [webView evaluateJavaScript:@"document.body.innerHTML" completionHandler:^(id result, NSError *error) 
    {
        if (result != nil) {
        [self doCertainNetworkEvent]; //here another method is called with a networking function inside of it. 
    }
        if(error) 
        {
            NSLog(@"evaluateJavaScript error : %@", error.localizedDescription);
        }
    }];

}

当然,在didFinishNavigation方法调用中的网络功能完成之前,完成块无法完成(这是因为没有流量。)

我根据您提供的代码创建了一个示例项目,请将网络链接调节器设置为100%丢失(已验证模拟器中的Safari没有互联网连接),并且无法重现此问题。您能否发布重现此问题的代码(尽可能简单,省去任何不相关的细节)?嘿,谢谢你的努力@paulvs!我现在会想出一个更好的例子。@paulvs所以我把所有东西都剥离到一个简单的项目中,问题就不再出现了。我现在认为问题与实际的web内容本身有关。如果我知道出了什么问题,我会在这里发帖。