【问题标题】:Dismiss Keyboard not working with PickerView in the way关闭键盘无法与 PickerView 一起使用
【发布时间】: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,并在键盘关闭时启用它

标签: swift


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你必须辞职FirstResponder。

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

    }

    【讨论】:

    • 我添加了那行代码,并没有改变任何东西
    猜你喜欢
    • 2017-08-18
    • 2011-06-11
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多