繁体   English   中英

iPad popover textfield - resignFirstResponder不会关闭键盘

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM