ここに私が見つけたいくつかの新しい情報があります:
キーボードが初めて閉じているのを見ました。例:ビューは、firstResponderとしてUITextViewを使用してロードされました。スクロールすると、キーボードが閉じます。ただし、UITextViewをもう一度タップすると、キーボードが再び開き、もう一度スクロールしても閉じません。
理由を理解するために探して、私はこれを発見しました:
- 「viewDidLoad」では、ファーストレスポンダーを設定していました
- cellForRowAtIndexPathで、UITextViewをサブビューとして追加していました
- cellForRowAtIndexPathは、ViewDidLoadの後に呼び出されます
UITextViewがファーストレスポンダーを辞任していたとき、UITableViewがCellForRowAtIndexPathメソッドを呼び出してその特定のセルを検索していたために発生していることがわかりました。ただし、もう一度タップすると、CellForRowAtIndexPathは他のセルに対してのみ呼び出され、選択されたセルに対しては呼び出されませんでした。UITableViewの設定後にUITextViewがファーストレスポンダーとして設定された場合、セルは表示されていなくても保持されているように見えました。
次に、「viewDidAppear」の「becomefirstresponder」を移動しようとしました(uitableviewセットアップの後で呼び出されます)。その後、魔法のように問題が解決しました:-)内部のUITextViewが最初のレスポンダーである場合、セルは解放されなくなります。
残っている唯一の問題はこれでした。viewDidApperで「becomeFirstResponder」を呼び出すと、キーボードの遅延が画面に表示されます。これを回避するために、viewDidLoadでbecomeFirstResponderを呼び出し、次にviewDidAppearで辞任して、becomeFirstResponderを再度呼び出しました。
お役に立てれば