Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在没有触摸手势识别器的情况下关闭键盘_Ios_Swift - Fatal编程技术网

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

Ios 在没有触摸手势识别器的情况下关闭键盘,ios,swift,Ios,Swift,我有一个视图,它的上半部分有两个文本字段,下半部分有一个tableview。如果在视图中添加触摸手势识别器,则表格行选择将不再有效。其中一个文本字段使用默认键盘,但另一个使用十进制键盘。我可以在第一个文本视图中使用return或“Done”,但十进制键盘没有这个选项 我已经解决了这个问题,在视图中添加了一个“解散键盘”按钮,但我觉得它很难看。还有其他方法吗?解决此问题的一种方法是,将根视图(这是两个文本字段和表格视图的超级视图)转换为UIControl。 然后将触地或触地内事件处理程序添加到控件

我有一个视图,它的上半部分有两个文本字段,下半部分有一个tableview。如果在视图中添加触摸手势识别器,则表格行选择将不再有效。其中一个文本字段使用默认键盘,但另一个使用十进制键盘。我可以在第一个文本视图中使用return或“Done”,但十进制键盘没有这个选项


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

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

我更喜欢使用UIControl而不是UIGestureRecognitizer来解决此类问题,因为它优雅地处理事件并遵守层次结构,因此,例如,如果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

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

我更喜欢使用UIControl而不是UIGestureRecognitizer来解决此类问题,因为它优雅地处理事件并遵守层次结构,因此,例如,如果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

您可以使用此链接向此类键盘添加“解除”或“完成”按钮:

您可以使用此链接向此类键盘添加“解除”或“完成”按钮:

您只需使用一行代码即可解除键盘

self.view.endEditing(true)

检查一下这个

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

self.view.endEditing(true)

还可以查看此功能

您可以随时在键盘上添加一个工具栏,并带有“关闭”选项;它并不丑陋;或者,您可以将您的基本
UIView
更改为
UIController
,并可以处理触地事件并辞去第一响应者。这听起来像是一个UXUI问题,值得截图。这不是一个堆栈溢出的问题。这对堆栈来说很好。让我们帮助Paul,而不是告诉他去哪里。只在键盘显示时添加手势…您始终可以在键盘上添加工具栏,并带有“关闭”选项;它并不丑陋;或者,您可以将您的基本
UIView
更改为
UIController
,并可以处理触地事件并辞去第一响应者。这听起来像是一个UXUI问题,值得截图。这不是一个堆栈溢出的问题。这对堆栈来说很好。让我们帮助Paul,而不是告诉他去哪里。只在键盘显示时添加手势…伟大的解决方案,易于实现!伟大的解决方案,易于实施!