2011-01-14 22 views
8

iPad上でUIWebView(画面の100%を占める)に読み込んでいるページがあります。UIWebViewのキーボードが表示され、入力フォーカスに自分自身を隠す

テキストフィールドをタッチすると、テキストフィールドが正しい場所に配置され、キーボードが表示され始めますが、前後に回転して戻り、入力フィールドでぼかしが呼び出されます。

モバイルSafariでこの同じページを試すと、キーボードを正常に展開できます。

私は、キーボードが正常に表示されていることを理解できず、そのままSafariよりもuiwebviewの方が違うのはなぜですか?

私のこの件に関するすべての研究は答えを得ていません。

+0

キーボードがアップしたときにビューのサイズが正しく変更されますか?そうでない場合、予期しない動作の原因となる可能性があります。 – Paul

+0

ビューのサイズを正しく設定するにはどうすればよいですか?私はすでにキーボードイベントのハンドラーを持っています。私はちょうどキーボードがどんな状態に留まるのに必要なのかわかりません... – Jake

+3

あなたのwebViewデリゲートメソッドの1つでfirstresponderを変更/放棄しているようですね。それらの代議員のコードを表示してもらえますか? –

答えて

1

あなたの質問に投稿された任意のコードを持たずに、私が最初にあなたのUIWebView.delegateを設定し、キーボードはバックダウンすると、HTMLテキストフィールドはこれをテストするためにUIWebViewDelegate webViewDidFinishLoad:

する前に、最終的な呼び出しにタッチしたときにのみ発生することを推測していますそれを所有するUIViewController(またはUIWebViewを所有するオブジェクト)に送信します。次に、これらのデリゲートメソッドを実装します。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSString *urlString = request.URL.absoluteString; 
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString); 

    return YES; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *urlString = webView.request.URL.absoluteString; 
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString); 
} 

アプリを実行して、webViewDidFinishLoad:が呼び出された回数を書き留めます。 (ウェブページに複数のフレームが含まれている場合や、Googleアナリティクスのようなものが含まれている場合は、複数回呼び出されます)

最終的に `webViewDidFinishLoad: 'が呼び出された後にHTMLテキストフィールドに触れてみてください。キーボードは止まっていますか? (私はそう思うだろう)。

これがうまくいくならば、最後に `webViewDidFinishLoad: 'の最後の呼び出しの前に触れてみてください。キーボードは動くが、戻ってきますか?

関連する問題