【问题标题】:dismiss keyboard without touch gesture recognizer在没有触摸手势识别器的情况下关闭键盘
【发布时间】:2016-03-18 16:18:31
【问题描述】:

我有一个视图,其顶部有两个文本字段,下半部分有一个表格视图。如果我向视图添加触摸手势识别器,表格行选择将不再起作用。其中一个文本字段使用默认键盘,但另一个使用小数点。对于第一个文本视图,我可以使用 return 或 "Done",但小数点没有该选项。

我通过在视图中添加“关闭键盘”按钮解决了这个问题,但我觉得它很难看。还有其他方法吗?

【问题讨论】:

  • 您可以随时在键盘上添加工具栏,并带有关闭选项;它并不难看;或者您可以将您的基础UIView 更改为UIController 并可以处理触地事件并辞去第一个响应者。
  • 这听起来像是一个 UXUI 问题,值得截图。这不是 Stack Overflow 问题。
  • 堆栈很好。让我们帮助保罗,而不是告诉他去哪里。
  • 只在显示键盘时添加手势...

标签: ios swift


【解决方案1】:

解决此问题的一种方法是将根视图(即两个文本字段和表格视图的父视图)转换为UIControl。 然后将touchDowntouchUpInside 事件处理程序添加到控件,这将关闭键盘。

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

附录:

您还可以将自定义视图添加为文本字段的inputAccessoryView,该文本字段又可以包含键盘关闭按钮。此视图不会成为您的视图层次结构的一部分,但顾名思义,它将是您键盘的附属视图。例如,它可以有一个“X”按钮来关闭键盘。

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

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

【讨论】:

  • 很好的解决方案,易于实施!
【解决方案2】:

你可以用一行代码简单地关闭键盘

self.view.endEditing(true)

也检查一下TPKeyboardAvoiding

【讨论】:

    【解决方案3】:

    您可以使用以下链接向此类键盘添加“关闭”或“完成”按钮:https://github.com/chrisamanse/iOS-KeyboardAccessoryToolbar/tree/master/KeyboardAccessoryToolbar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 2021-07-07
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      相关资源
      最近更新 更多