在没有触摸手势识别器的情况下关闭键盘

时间:2016-03-18 16:18:31

标签: ios swift

我有一个视图,在视图的顶部有两个文本字段,在下半部分有一个tableview。如果我向视图添加触摸手势识别器,则表格行选择不再有效。其中一个文本字段使用默认键盘,但另一个使用十进制键盘。我可以使用return或" Done"在第一个textview的位置,但小数位垫没有该选项。

我通过添加" Dismiss Keyboard"解决了这个问题。按钮到视图,但对我来说感觉很难看。还有另一种方式吗?

3 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是将根视图(两个文本域和tableview的超视图)转换为UIControl。 然后向控件添加touchDowntouchUpInside事件处理程序,这将解除键盘。

我更喜欢使用UIControl而非UIGestureRecognizer来解决此类问题,因为它优雅地处理事件并遵循层次结构,因此,例如,如果UITableView是其子视图,UIControl将不会干扰UITableView上的滚动和触摸事件。

<强>附录:

您还可以将自定义视图添加为文本字段的inputAccessoryView,而这些文本字段又可以包含键盘解除按钮。此视图不是视图层次结构的一部分,但顾名思义,它将是键盘的附件视图。例如,它可以有一个&#39; X&#39;按钮关闭键盘。

使用输入附件视图的方法是:

    // this needs to be an instance variable
    self.kbAccessoryView = UIView() //add button, add action etc.
    self.firstTextfield.inputAccessoryView = kbAccessoryView
    self.secondTextfield.inputAccessoryView = kbAccessoryView

答案 1 :(得分:1)

您可以使用一行代码

简单地解除键盘
self.view.endEditing(true)

另请查看TPKeyboardAvoiding

答案 2 :(得分:0)

您可以添加&#39; Dismiss&#39;或者&#39;完成&#39;使用此链接按下此类键盘:https://github.com/chrisamanse/iOS-KeyboardAccessoryToolbar/tree/master/KeyboardAccessoryToolbar