关闭键盘无法与 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 时禁用键盘输入