web-dev-qa-db-ja.com

UIWebViewをクリアする方法

私はプログラミング業界全体にとって非常に新しいので、iPhoneプログラミングでUIWebViewの内容をクリアする方法があるのではないかと考えていたので、次のビューのロードシンボルが前面に表示されないようにしました最後のビュー。どうもありがとう、トーマス

42
Tom Cuzz

URLをabout:blankに設定して、ページをリロードしてください。

145

空のHTML文字列をロードするだけです

[self.webView loadHTMLString:@"" baseURL:nil];

25
2cupsOfTech

他の誰かを助けるために、文書化のために拡張機能に答えてください:

私は同じ希望を持っていました(次のURLを読み込む前にコンテンツをクリアします)が、webviewDidFinishLoad:(UIWebView)webviewメッセージを受信し、それに応じてUIの別の部分を更新するようにUIWebViewデリゲートを設定しました。

問題:alsoへのコンテンツをクリアする呼び出しはデリゲートメソッドを呼び出したため、false-hitsを取得します(つまり、クリアが行われたときに呼び出しを取得しますが、デリゲートは実際のコンテンツの場合のみ呼び出しを予期するようにコーディングされています)が読み込まれます)。

解決策:明確にするために既知のURLを使用し、webviewDidFinishLoad:そのURLが終了したときに行われた呼び出しを無視します。

- (void) startLoadOfNextURL:(NSURL*)url
{
    // clear:
    [self.webView loadHTMLString:@"" baseURL:nil];

    // Load real next URL
    NSURLRequest* request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
}


- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSLog(@"WebView finished loading: %@", webView);
    if ([self.webView.request.URL.absoluteString isEqualToString:@"about:blank"]) {
        NSLog(@"  This is Blank. Ignoring as false event.");
    }
    else {
        NSLog(@"  This is a real url");
        [self updateUIInSomeWay];
    }
}

注:これを使用して:

    [self.webView loadHTMLString:@"about:blank" baseURL:nil];

実際には、「about:blank」という単語がWebviewのコンテンツペインにテキストとして表示されます。

最終的な合併症:実際には、2つの[webview load...]呼び出しが非常に接近しているため、クリアのための「ロードされた」イベントの代わりに、Webビューが実際に2番目の要求を受け入れてキャンセルし、webView: didFailLoadWithError:最初のロード要求。したがって、そのイベントに同様のコードを配置する必要がありました。

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    NSLog(@"WebView error on: %@", webView);
    NSLog(@"Error is: %@", error);

    NSURL* failingURL = [error.userInfo objectForKey:@"NSErrorFailingURLKey"];
    if ([failingURL.absoluteString isEqualToString:@"about:blank"]) {
        NSLog(@"  This is Blank. Ignoring.");
    }
    else {
        NSLog(@"  This is a real URL.");
        [self doSomethingAboutError];
    }
}
9
Bill Patterson

Swift、Xcode 7ベータ5

webView.loadRequest(NSURLRequest(URL: NSURL(string: "about:blank")!))
5
neoneye

Swift 4.0、XCODE 9

webView.loadRequest(URLRequest.init(url: URL.init(string: "about:blank")!))
3
ViJay Avhad

Swift 4.2、xCode 1で同じ答え

if let clearURL = URL(string: "about:blank") {
   myWebView.loadRequest(URLRequest(url: clearURL))
}