我有一个 View ,在 View 的顶部有两个文本字段,在下半部分有一个表格 View 。如果我将触摸手势识别器添加到 View 中,表格行选择将不再有效。其中一个文本字段使用默认键盘,而另一个使用小数位。我可以在第一个 TextView 的位置使用 return 或“Done”,但小数位没有该选项。
我已经通过在 View 中添加“关闭键盘”按钮解决了这个问题,但我觉得它很难看。还有别的办法吗?
最佳答案
解决此问题的一种方法是,将 Root View (即两个文本字段和表格 View 的父 View )转换为 UIControl
。
然后将 touchDown
或 touchUpInside
事件处理程序添加到控件,这将关闭键盘。
我更喜欢使用 UIControl 而不是 UIGestureRecognizer 来解决此类问题,因为它可以优雅地处理事件并遵守层次结构,例如,如果 UITableView 是其 subview ,UIControl 将不会干扰 UITableView 上的滚动和触摸事件。
附录:
您还可以将自定义 View 添加为文本字段的 inputAccessoryView
,它又可以包含键盘关闭按钮。此 View 不会成为您的 View 层次结构的一部分,但正如其名称所暗示的那样,它将成为您键盘的附属 View 。例如,它可以有一个“X”按钮来关闭键盘。
input accessory view的使用方式是:
// this needs to be an instance variable
self.kbAccessoryView = UIView() //add button, add action etc.
self.firstTextfield.inputAccessoryView = kbAccessoryView
self.secondTextfield.inputAccessoryView = kbAccessoryView
关于ios - 在没有触摸手势识别器的情况下关闭键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36089334/