[英]iPad popover textfield - resignFirstResponder doesn't dismiss keyboard
我有两个文本字段的电子邮件和密码。 当在常规视图上显示字段时,以下代码可以正常工作,但是当它们在弹出窗口上时,resignFirstResponder不起作用(becomeFirstResponder工作)。 两个字段都调用了textFieldsShouldReturn。 如果我遗失了什么,不知道吗? 谢谢!
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == email) {
[password becomeFirstResponder];
return NO;
}
[theTextField resignFirstResponder];
return NO;
}
检查这个问题:
覆盖disablesAutomaticKeyboardDismissal
返回NO
,如下所示修复了我的同样问题。 您应该将此代码放入视图控制器,从中启动键盘:
- (BOOL)disablesAutomaticKeyboardDismissal {
return NO;
}
如本回答所述 ,当视图以UIModalPresentationFormSheet样式呈现时,键盘有时会保留在屏幕上。
我不太确定这一点,但是,正如我理解响应者层次结构一样,只有当你有其他响应者回答时,辞职才有效。
在常规视图中,视图本身是愿意的。 在一个弹出窗口中,你可能需要对你的弹出类做一些事情(比如重新实现一些Responder方法)才能使它工作。
我也有这个问题。 但我通过制作另一个控件来解决这个问题,这个控件不在firstResponder
作为firstResponder
,后来从那里firstResponder
。 但我不知道popover有什么问题。
答案是作为可能的解决方案提供给具有类似问题的其他人,但传统的补救办法不起作用。
综上所述 -
我有一个类似的问题( 在一定条件下 )并尝试了一切 - 无济于事 - 我的可能解决方案列表包括[obj的resignFirstResponder],覆盖了我的视图控制器的'disablesAutomaticKeyboardDismissal',[self.view endEditing:YES ]。 和一堆其他的东西。
关于确定当前第一响应者的[id],只发现它是零。 点击键盘上的'完成'或使用上述任何方法都没有做任何事情 - 键盘仍然存在 - 即使在点击另一个输入字段后也是如此。
屏幕本质上是一个带有UITableView的ViewController,每个单元格中有一个文本输入字段 - 总共7或8个。 点击任何单元格将按预期调出键盘并点击单独的“下一步”按钮(隐藏键盘加上其他处理)按预期工作。 但是,在横向模式下,键盘覆盖了最后一个字段,需要滚动表格才能显示。
滚动并点击最后一个输入字段后,键盘无法解除 - 无论如何。 唯一的解决方法是将表格滚动回键盘下方,然后点击“下一步”按钮。 这没有意义。
几乎在放弃(并实现变通方法)的时候,有效的解决方案是将最后一个输入字段设置为firstResponder(即使它已经有一个闪烁的光标),然后再调用resignFirstResponder。
所以;
` - (void)actionNext {
[[m_arrInputFields objectAtIndex:7] becomeFirstResponder];
[[m_arrInputFields objectAtIndex:7] resignFirstResponder];
}`
修复了问题 - 而[m_arrInputFields objectAtIndex:#any其他索引#] 没有!
如果有人能为此提供清晰度或解释,那将是很好的 - 否则 - 我希望它可以节省其他人几个小时的工作!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.