0

NSURLRequestReloadIgnoringLocalAndRemoteCacheData の cachePolicy を使用して UIWebView をセットアップしましたが、すべて問題ありませんでした。接続があった場合は UIWebView が読み込まれ、接続がない場合は connection:didFailWithError: が呼び出され、UIAlertView を取得しました。

しかし、cachePolicy を NSURLRequestReturnCacheDataElseLoad (実際に必要なポリシー) に変更すると、接続がない場合、キャッシュされたページが読み込まれ、リンクをクリックしても何も起こりません。接続なし:didFailWithError: が呼び出されました。UIAlertView はありません。

これを修正するにはどうすればよいですか?

編集: おそらく私は答えの始まりを持っています....次の方法を使用して、UIWebViewのリンクがクリックされたときを少なくとも識別できます:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)req navigationType: (UIWebViewNavigationType)navigationType
{
    if (navigationType==UIWebViewNavigationTypeLinkClicked)
    {
        NSLog(@"Blah!");
    }
    return YES;
}

さて、NSLogging の代わりに「Blah!」connection:didFailWithError を呼び出すように取得するだけです。

では、どうすればいいですか?

4

1 に答える 1

0

やったよ!

このコードを追加しました:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)req navigationType:(UIWebViewNavigationType)navigationType
{
    if (navigationType==UIWebViewNavigationTypeLinkClicked)
    {
        NSURL *scriptUrl = [NSURL URLWithString:@"http://www.homePageOfTheApp.com"];
        NSData *data = [NSData dataWithContentsOfURL:scriptUrl];
        if (data == nil)
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error title." message:@"Error message." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
        }
    }
return YES;

}

私はそれを置き換えるかもしれませんがhttp://www.homePageOfTheApp.com"http://www.google.com私のホストには非常に信頼性の高いサーバーがありますが、Google のサーバーはさらに優れていると思います....

于 2012-08-24T04:44:42.053 に答える