0

を介してWebページを表示するiOSアプリに取り組んでいますUIWebView。このページには、20〜40個のボタンが含まれています。それぞれがajaxリクエストをサーバーに送信します。ほとんどの部分で機能しますが、サーバーはデスクトップアプリであり、警告なしに理由を問わずいつでも閉じることができます。これらのajaxリクエストでは、ユーザーに出力が表示されないため、サーバーがダウンした場合、ユーザーにはわかりません。ajaxタイムアウトの通知を受け取り、ユーザーに再試行するかホーム画面に戻るかを選択できるようにしたいと思います。UIWebView失敗したajaxリクエストを通知する方法が見つからないようです。

webView:didFailLoadWithError:最初は、のメソッドを使用できると思っていましUIWebViewDelegateたが、失敗したajaxリクエストは通知されないようです。

任意の提案は大歓迎です

4

1 に答える 1

2

障害が発生したときに、location.href を変更する Ajax 障害ハンドラーで呼び出される JavaScript コードがある場合、UIWebViewDelegate shouldStartLoadWithRequest: メソッドが呼び出され、障害が発生したときに何かを行う機会が与えられます。すなわち

Ajax タイムアウト処理コード:

 window.location.href = "myscheme://AjaxFailure";

UIWebViewDelegate 処理コードで:

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{
    NSLog(@"shouldStartLoadWithRequest: url: %@", [[request URL] absoluteString]);
    NSURL *URL = request.URL;
    if ([URL.scheme isEqualToString:@"myscheme"])
    {
     ... notify the user there was an error
于 2012-06-19T01:03:01.607 に答える