答えは、同様の問題を抱えているが、従来の救済策が機能しない他の人への可能な解決策として提供されます。
要約すれば -
私は(特定の条件下で)同様の問題を抱えていて、すべてを試しました-役に立たなかった-可能な解決策のリストに含まれていたのは[objのresignFirstResponder]、ビューコントローラーの「disablesAutomaticKeyboardDismissal」のオーバーライド、[self.view endEditing:YES]でした]; などなど。
現在のファーストレスポンダの [id] を調べてみましたが、それが nil であることがわかりました。キーボードで [完了] をタップするか、上記のいずれかの方法を使用しても、別の入力フィールドをタップした後でも、何も起こりませんでした。キーボードは残りました。
画面は基本的に、各セルにテキスト入力フィールドを持つ UITableView を持つ ViewController でした (合計で 7 つまたは 8 つ)。任意のセルをタップすると、期待どおりにキーボードが表示され、別の「次へ」ボタンをタップすると (キーボードとその他の処理を非表示にする)、期待どおりに機能しました。ただし、横向きモードでは、最後のフィールドがキーボードで覆われており、テーブルをスクロールして表示する必要がありました。
最後の入力フィールドをスクロールしてタップした後、何があってもキーボードを閉じることができませんでした。唯一の回避策は、表をキーボードの下にスクロールして戻し、[次へ] ボタンをタップすることでした。意味がありません。
ほとんどあきらめる (そして回避策を実装する) 時点で、うまくいった解決策は、その最後の入力フィールドを firstResponder にして (点滅するカーソルが既にあったとしても)、その後、ResignFirstResponder にすることでした。
そう;
`-(void) アクションネクスト {
[[m_arrInputFields objectAtIndex:7] becomeFirstResponder];
[[m_arrInputFields objectAtIndex:7] resignFirstResponder];
}`
問題を修正しました- [m_arrInputFields objectAtIndex:#any other index#]はしませんでした!
誰かがこれについて明確または説明を提供できれば素晴らしいでしょう-そうでなければ-他の誰かが数時間の作業を節約できることを願っています!