私は、Apple自身を含め、キーボードの存在を処理するためにスクロールビューの複数の実装を試しました。私はそれらのどれも動作させることができません。
キーボードが表示されていないときにスクロールする必要のないビューがありますが、テキストフィールドが最初の応答者になり、キーボードが表示されたら、一部のコンテンツをスクロール可能にする必要があります。
編集可能なテキストフィールドは画面の最初のフィールドだけなので、ビューをスクロールして何かを再表示する必要はありません。画面の上半分にスクロール機能が必要ですが、キーボードが表示されている場合のみです。
これは私が得ることができる限り近いです:
キーボード通知を正常に登録できます。読み込み時に、スクロールビューとコンテンツサイズをビューの全高に設定しています。キーボードが表示されたら、スクロールビューのサイズを元の高さからキーボードの高さを引いたものに変更します。
scrollView.frame = CGRectMake(0, 0, 320, 416 - kbSize.height);
そして非表示にすると、私はそれをリセットするだけです:
scrollView.frame = CGRectMake(0, 0, 320, 416);
これはほとんど機能します。ただし、キーボードが表示されたら、ビューの一番下までスクロールして(キーボードを表示したまま)、リターンキーを使用してキーボードを非表示にすると、スクロールビューのサイズが変更されると、上に戻るエレガントな「ジャンプ」が発生します。画面の。スクロールビューのサイズを変更するためのスムーズなアニメーションスクロールはありません。
何か案は?私はAppleの実装と比較してこれをハックしていると思いますが、これは私が得たものに最も近いものです。