关闭键盘无法与 PickerView 一起使用

Posted

技术标签:

【中文标题】关闭键盘无法与 PickerView 一起使用【英文标题】:Dismiss Keyboard not working with PickerView in the way 【发布时间】:2016-12-09 21:47:31 【问题描述】:

(到目前为止)我有两个视图控制器,它们都至少有一个文本字段。

当用户点击文本字段时,键盘会弹出。

我已经准备好所有的代码来向上移动内容,然后在发生这种情况时再次向下移动,(一切都在滚动视图中,我被认为是最佳实践)

当用户在文本字段之外点击时,我还有代码可以关闭键盘。

在第一个视图控制器上它工作得很好,但在第二个我有一个 UIPickerView 占用了文本字段下方的大量空间。因此,当用户点击最明显的空间量时会发生什么,他/她实际上是在点击滚动视图,但没有任何反应。但是,如果用户在一个非常小的空白区域点击,而不是滚动视图,键盘就会关闭。

如何使用 UIPickerView 关闭键盘? 这是我的情况的图像

这是部分代码

    func textFieldShouldClear(_ textField: UITextField) -> Bool 
    self.view.endEditing(true)
    return false


func textFieldShouldReturn(_ textField: UITextField) -> Bool 
    self.view.endEditing(true)
    return false


  func dismissKeyboard() 
    view.endEditing(true)

【问题讨论】:

如果要在触摸选择器时关闭键盘,只需在显示键盘时设置picker.userInteractionEnabled = false,并在键盘关闭时启用它 【参考方案1】:

您可以在显示键盘时禁用picker 上的userInteractionEnabled(或textField 成为第一响应者)并在键盘关闭时重新启用它(或textField 退出第一响应者)。

【讨论】:

【参考方案2】:

你必须辞职FirstResponder。

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
    self.view.endEditing(true)
    textField.resignFirstResponder()
    return false

【讨论】:

我添加了那行代码,并没有改变任何东西

以上是关于关闭键盘无法与 PickerView 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在uitextfield而不是键盘中显示pickerview?

如何在键盘外观上向上移动包括pickerview在内的整个视图

使用 UITextField + UIPickerview 时禁用键盘输入

无法让 CORS 与 Web API 2 一起使用

无法让 ASP.NET Core Web API 与 IIS 一起使用 [关闭]

如何在 PickerView 顶部添加一个按钮以及如何在单击该按钮时关闭 PickerView?