私はUITableView
いくつかのを持っていUITextFields
ます。ユーザーが を編集するtextfields
と、textfield
がfirstresponder
キーボードのすぐ上の位置にスクロールされます。textfields
これは、デフォルトのキーボードを使用する場合にうまく機能します。しかし、私はinputViewとしてtextfield
使用しているものを持っています。UIPickerView
での選択をユーザーに確認してもらいたいので、 の に完了ボタン付きのpickerview
も追加しました。accessoryview
inputAccessoryView
textfield
今、私は理解できない行動に遭遇します。キーボードが表示されていないときにピッカービューでテキストフィールドをクリックすると、 UIKeyboardDidShowNotification
. 通知により、次の関数呼び出しが行われます。
- (void)keyboardWasShown:(NSNotification *)aNotification {
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
// handle resize of tableview frame...
}
キーボードの高さ (kbSize.height) は 260 です。これは、 のツールバーの既定のキーボード サイズである 216 + 44 と同じですaccessoryview
。はtextfield
、 のツールバーの上の位置にスクロールされaccessoryview
ます。
奇妙な動作は、最初にデフォルトのキーボードでテキストフィールドをクリックしてから、(キーボードを閉じずに)テキストフィールドでpickerview
. はpickerview
期待どおりに表示されますが、キーボード サイズは変更されず、216 のままです (通知は処理されます)。これにより、スクロール動作が異なります。textfield
は、 の半透明のツールバーの後ろに表示されaccessoryview
ます。
どちらの場合もピッカービューでキーボードのサイズが異なる理由を誰かが説明してください。
コードでこれを処理する方法を教えてください。textfield
半透明のツールバーの後ろの位置までスクロールすると、私にとっては問題ありません。