0

UIWebViewを含む実行中のアプリケーションがappstoreにあります。iOS6.0までは完全に正常に機能していました。OS 6では、一部のハイパーリンクが機能していませんが、iPadのiOSでSafariブラウザーを使用すると、同じことが正常に機能します。

それを機能させるためにいくつかのデリゲートメソッドを追加する必要がありますか?現在、次のコードを使用しています。

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:kAuthenticationURL]];
[request setValue:[NSMutableURLRequest userAgentRequests] forHTTPHeaderField:@"User-Agent"];
[request setHTTPMethod:@"POST"];
[request setHTTPShouldHandleCookies:YES];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

NSData *postData = [[NSString stringWithFormat:@"username=%@&code=%@", username, password]
                             dataUsingEncoding:NSASCIIStringEncoding];
[request setHTTPBody:postData];

私が使用したデリゲート:

1)

- (void)webViewDidStartLoad:(UIWebView *)webView

2)

- (void)webViewDidFinishLoad:(UIWebView *)webView

このメソッド内では、データのロードに以下を使用しました。

[self.webView stringByEvaluatingJavaScriptFromString:@"window.location.reload = function(){};"]; 

3)

- (BOOL)webView:(UIWebView *)webViewshouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType`

iOS 6で動作させるために、何か特別なものを実装する必要がありますか?

どんな助けでも適用されます...

4

1 に答える 1

1

ここで説明されているのと同じ問題を抱えている可能性があります: stringByEvaluatingJavaScriptFromString is not working in iOS 6 or here iOS 6 - UIWebView loadHTMLString not working correctly

iOS 6 ではページの読み込みとレンダリングが異なるようで、5 よりも厳密になる可能性があります

hereに記載されているように、iOS6のインクリメンタルレンダリングを抑制しようとすることができます

抑制IncrementalRendering

A Boolean value indicating whether the web view suppresses content rendering 
until it is fully loaded into memory.
@property(nonatomic) BOOL suppressesIncrementalRendering

ここで説明されているように、Mac を使用してデバッグを試みることもできます。

追加のヒント: iOS6 で JavaScript エラーをデバッグするには、新しい機能により非常に簡単になります。

  • iPhoneの「設定」アプリケーションに移動し、「Safari」設定に入り、下部にある「詳細」をタップして、そこから「WebKitインスペクター」を有効にします
  • デバッグするページを画面に表示します (つまり、アプリを起動し、WebView を含む画面に移動して表示します)。
  • USBケーブルを介してiPhoneをMacに接続します
  • Mac で Safari.app を開き、[開発] メニュー(1)に移動し、iPhone の名前のメニュー項目を選択し、サブメニューでアプリケーションを選択します。

その後、Mac から強力な Web インスペクタを使用して iPhone に表示された Web ページをデバッグし、javascript コンソール、DOM ツリーなどを調べることができます。

(1) Mac の Safari に「開発」メニューがない場合は、Safari アプリケーションの「詳細設定」タブで有効にすることができます。

リモート デバッグの詳細については、ここ([リモート デバッグ] までスクロール) またはここ(WWDC ビデオ セッション: 「iOS での UIWebViews と Web サイトのデバッグ」) を参照してください。

于 2013-02-18T11:57:05.877 に答える