当在 UITableView 中选择一行并且在导航控制器内触发推送 segue 时,我想从当前编辑的文本字段中退出第一响应者。这是在弹出框内发生的。
我尝试了两件事:
(1)我可以看到文本字段在制作动画时正在退出第一响应者,但是当我返回视图控制器时,它再次使用第一响应者并显示键盘。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.view endEditing:YES];
}
(2)这会阻止在返回视图控制器时恢复编辑,但是这种方法会破坏动画。在动画结束时,第一个视图控制器变黑并且有点跳跃。
编辑:刚刚意识到这仅在横向模式下可见,因为它与键盘动画比推送动画更快有关,并且一旦键盘消失并且弹出框开始动画到更高的高度,它就会变黑当键盘为它留出空间时。在为导航控制器中的推送动画制作动画时,动画无法处理扩展弹出框。当删除下面的代码并推送并让 iOS 删除键盘时,键盘和推送动画的时间完全相同,从而避免了这个问题。我想知道如何在强迫辞职的同时自己做到这一点。
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.view endEditing:YES];
return indexPath;
}
如何在更改视图控制器时辞职第一响应者而不在导航返回时再次恢复文本字段上的第一响应者?