2009-02-25 5 views

答えて

4

UIWebViewは、これが簡単なWebKitの完全なWebViewの薄暗い小さな影です。 -webView:shouldStartLoadWithRequest:navigationType:はナビゲーションのためにのみ呼び出されます。 MacではWebPolicyDelegateのようにリクエストごとに呼び出されるわけではありません。 UIWebViewで、私はこの問題をどのように攻撃するのですか:

-webView:shouldStartLoadWithRequest:navigationType:を実装し、常にNOを返すように設定します。しかし、あなたはまた、要求を受け取り、NSURLConnectionを生み出します。 NSURLConnectionがデータを取得し終えたら、それを調べて任意のIMGタグを探し、必要なプレースホルダーに変更します。次に、得られた文字列を-loadHTMLString:baseURL:を使用してUIWebViewにロードします。

もちろん、HTMLの解析はiPhone上では簡単ではありません.Javascriptローダーが問題を起こすこともあるので、これは完璧な答えではありませんが、私が知る限り最高です。

0

は、呼び出しを横取り、のUIWebViewのためのデリゲートう:

– webView:shouldStartLoadWithRequest:navigationType: 

は、ドキュメントのnavigationTypeの値を確認してください。 をnavigationType == UIWebViewNavigationTypeOtherに返すことで最高のサービスを提供できると思います。

+0

"" SRC =にwebView:shouldStartLoadWithRequest:navigationType:ダウンロードが行われた後に呼び出されます。 – Harry

0

これは実際にはページの読み込みを高速化しますか? イメージがまだダウンロードされているように聞こえますが、UIWebViewにはイメージが表示されません。

またはshouldStartLoadWithRequestはHTMLテキストを最初に読み込むだけですか?

1

ロブの解答が拡大しています。 loadHTMLString:baseURL:といつもNOを返すと気付きました。そのwebView:shouldStartLoadWithRequest:navigationType:ちょうど呼び出され続けます。 (私はloadHTMLStringが別のshouldStartLoadWithRequestを呼び出すと思う)。

はそう何私がしなければならなかったことはYES/NO を返す間の代替だったと私はHTMLと変更SRC = "のhttp:// ..." を解析するNSScannerを使用

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if (pageHasNoImages==YES) 
    { 
     pageHasNoImages=FALSE; 
     return YES;  
    } 
    NSString* newHtml; 
    NSString* oldHtml; 
    NSData *urlData; 
    NSURLResponse *response; 
    NSError *error; 
    urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
    oldHtml=[[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; 

    newHtml=[self.detail scannerReplaceImg:oldHtml]; // my own function to parse HTML 
    newHtml=[self.detail scannerReplaceAds:newHtml]; // my own function to parse HTML 
    if (newHtml==nil) 
    { 
     NSLog(@"newHtml is nil"); 
     newHtml=oldHtml; 
    } 
    [oldHtml release]; 

    pageHasNoImages=TRUE; 
    [web loadHTMLString:newHtml baseURL:request.URL]; 

    return NO; 
} 
関連する問題