答案是为其他有类似问题的人提供可能的解决方案,但传统的补救措施不起作用。
总之 -
我有一个类似的问题(在某种条件下)并尝试了一切 - 无济于事 - 我的可能解决方案列表中包含 [obj's resignFirstResponder],我的视图控制器的“disablesAutomaticKeyboardDismissal”覆盖,[self.view endEditing:YES ]; 和一堆其他的东西。
开始确定当前第一响应者的 [id],结果发现它是 nil。点击键盘上的“完成”或使用上述任何方法都没有任何效果 - 键盘仍然存在 - 即使在点击另一个输入字段后也是如此。
屏幕本质上是一个带有 UITableView 的 ViewController,每个单元格中都有一个文本输入字段 - 总共 7 或 8 个。点击任何单元格都会按预期调出键盘,然后点击单独的“下一步”按钮(隐藏键盘和其他处理)按预期工作。但是,在横向模式下,最后一个字段被键盘覆盖,需要滚动表格才能显示。
滚动并点击最后一个输入字段后,无论如何都无法关闭键盘。唯一的解决方法是将表格向后滚动到键盘下方,然后点击“下一步”按钮。这没有意义。
几乎在放弃(并实施解决方法)的时候,有效的解决方案是使最后一个输入字段成为 firstResponder (即使它已经有一个闪烁的光标),然后在此之后 resignFirstResponder 。
所以;
`-(void) actionNext {
[[m_arrInputFields objectAtIndex:7] becomeFirstResponder];
[[m_arrInputFields objectAtIndex:7] resignFirstResponder];
}`
修复了问题- 而 [m_arrInputFields objectAtIndex:#any other index#]没有!
如果有人能对此提供清晰或解释,那就太好了 - 否则 - 我希望它可以为其他人节省几个小时的工作!