【问题标题】:How to dismiss already opened keyboard when popover appears by other textfield ios其他文本字段ios出现弹出框时如何关闭已打开的键盘
【发布时间】:2015-06-04 13:49:30
【问题描述】:

在我的 iOS 项目中,我有一个包含各种文本字段的表单。一些文本字段由键盘编辑,一些由放置在弹出框上的选取器视图编辑。

当我继续填充文本字段时,没有关闭它,然后如果我点击弹出框文本字段键盘保持打开状态。

它在屏幕上同时显示为键盘和弹出框,这是我不想要的。

我可以通过在键盘通知方法中设置一个标志以及通过文本字段代表编辑的最后一个文本字段来获取键盘是否打开。并尝试过

  1. [self endEditing: YES];(在表格单元格中)

  2. [lastEditedTextField resignFirstResponder];

甚至尝试自己通过键盘关闭通知(不知道是否可能)

  1. [[NSNotificationCenter defaultCenter] postNotificationName:UIKeyboardWillHideNotification object:nil];

但没有任何效果。

当弹出框出现时如何关闭键盘(如果已经打开)?

【问题讨论】:

  • @Cœur,你的问题只是关于关闭键盘,但在什么情况下没有澄清(只是模糊的句子)。请仔细阅读问题中提到的场景。这不仅仅是关于键盘关闭。 UITextField 的键盘关闭将由嵌入在弹出窗口中的选择器进行编辑。如已接受的答案中所述,在 textFieldShouldBeginEditing 方法中调用键盘关闭功能并检查当前正在编辑的文本字段对于上述场景非常重要。
  • 我撤回了我的近距离投票,但我仍然不明白你的问题有什么独特之处:你想在点击时关闭键盘,然后只需 在点击时关闭键盘。当您比较解除方法时,只需参考链接的可能重复项以了解如何操作。

标签: ios keyboard uipopover


【解决方案1】:

您可以致电:

[self.view endEditing:YES];

但是,更好的解决方案可能是使用 UIResponder inputView 呈现选择器,因此它会自动替换键盘,您不需要在 2 个不同的事物之间进行调解(并且用户不会在不同的事物之间切换)可能是屏幕的一部分)。

【讨论】:

  • 我已经尝试过这个,但它也不起作用,我的要求是显示带有选择器视图的弹出框。因此,在这种情况下,您的第二个 UIResponder 解决方案,inputView 将不起作用,因为它将 UIView 作为参数而不是 UIPopoverController
  • 解释第一响应者文本字段在哪里以及您在哪里调用 endEditing(您在问题中的行与我在答案中的行不同)
【解决方案2】:

尝试实现textFieldShouldBeginEditing: 并在其中检查这是哪个文本字段。如果它是应该显示弹出框的字段之一,首先调用[self.view endEditing:YES] 隐藏键盘,然后呈现弹出框并返回NO。这样,文本字段将不会获得第一响应者状态,并且键盘不会再次出现。如果它是“普通”文本字段之一,则返回 YES

【讨论】:

  • 我尝试了你的建议,现在如果键盘已经出现在屏幕上,当我点击它时它会消失,然后出现弹出窗口。当我直接从弹出框文本文件开始时,第一个键盘出现,然后点击它消失,然后弹出框出现
  • @ChetanKoli,我想您使用的不是textFieldShouldBeginEditing:,而是UITextFieldDelegate 的其他一些方法。你必须使用textFieldShouldBeginEditing:。这样,您可以通过分别返回 YESNO 来控制键盘是否出现。
  • 非常感谢......在这篇文章之前,我在 -(void)textFieldDidBeginEditing:(UITextField *)textField 方法中处理这个问题,在你发表评论后我纠正了我的错误。现在它工作正常。
  • 这让我走上了正轨!对于我的情况,我需要在 textFieldShouldBeginEditing 和 textFieldDidBeginEditing 中使用 self.view endEditing。更重要的是,它让我的周末回来了! :D
猜你喜欢
  • 2011-02-08
  • 2013-06-27
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
相关资源
最近更新 更多