3

私はUITableViewいくつかのを持っていUITextFieldsます。ユーザーが を編集するtextfieldsと、textfieldfirstresponderキーボードのすぐ上の位置にスクロールされます。textfieldsこれは、デフォルトのキーボードを使用する場合にうまく機能します。しかし、私はinputViewとしてtextfield使用しているものを持っています。UIPickerViewでの選択をユーザーに確認してもらいたいので、 の に完了ボタン付きのpickerviewも追加しました。accessoryviewinputAccessoryViewtextfield

今、私は理解できない行動に遭遇します。キーボードが表示されていないときにピッカービューでテキストフィールドをクリックすると、 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半透明のツールバーの後ろの位置までスクロールすると、私にとっては問題ありません。

4

0 に答える 0