2012-09-11 22 views
5

私はスクロールするときにウィンドウの上部に固定されたナビゲーションバーを持っています。しかし、入力をクリックすると、キーボードがポップアップして固定位置のnavが動いて、間違った位置に止まります。これを修正する方法はありますか?iosのキーボードが固定位置のヘッダーを移動します。

また、キーボードをクリックしてキーボードを閉じることもできません。

+0

は、インタフェースビルダーまたはカスタムビューに設定されたナビゲーションバーですか?デフォルトのナビゲーションバーの場合は移動できません – jere

+0

キーボードが表示されているときに実行されるコードが必要です。あなたが私たちに手伝ってもらうために、それを投稿してください。また、キーボードが隠されているときに実行されるコードを投稿します。最後に、キーボードを外にタップしてもキーボードは閉じられません。 – lnafziger

+0

http://stackoverflow.com/questions/7970389/ios-5-fixed-positioning-and-virtual-keyboard と http://stackoverflow.com/questions/12550298/mobile-safari -ios-6-0-キーボード固定時の位置付け – sjobe

答えて

0

あなたのナビゲーションバーが動く理由はわかりません。サブクラス化またはUINavigationControllerを使用している場合は、デフォルトでナビゲーションバー自体が提供されますが、常に非表示にすることができます。あなたがしていないだけでUINavgivationBarだけでなく、フレームを移動する可能性よりもコントローラを取得するビューコントローラのスタックが必要です。あなたのバーが動かないようにするために、代わりにnavコントローラを使用することをお勧めします。

クリックしたときにキーボードが隠れていないように対処します。これを行う「自動」方法はありません。キーボードを表示させるためにクリックしたテキストフィールドへの保存された参照に対して、メソッドresignFirstResponderを明示的に呼び出さなければなりません。これを行う最善の方法は、NSMutableArrayプロパティを作成し、ビューコントローラ.hにUITextfieldDelegateを実装し、メソッドを置くことです - (void)textfiedDidBeginEditing:(UITextfield *)textfield私はあなたの.mです。内部にそこから、ユーザがキーボードIEを却下する方法を決定する必要があります。IEはバックグラウンドをクリックしました。そのため、最も簡単な方法は、テキストなしの巨大なUIButtonをバックグラウンドに追加して、そのmutable配列をループし、すべての場合にresignFirstResponderを呼び出し、完了したら配列をクリアするメソッドを呼び出すことです。

とするか、テキストフィールドのキーボードタイプをいつでも終了ボタンがあるものに変更することができます。

あなたの選択はあなたです!