【问题标题】:iOS SDK: Dismiss keyboard when a button gets clicked?iOS SDK:单击按钮时关闭键盘?
【发布时间】:2011-09-15 11:10:01
【问题描述】:

当用户单击按钮时如何关闭键盘? 一个更好理解的简短示例:用户在某些文本字段中编辑一些文本,最后他没有在键盘上单击“完成”或其他内容,而是在仍然显示键盘时单击“保存”按钮.那么,我现在如何关闭键盘?

谢谢。问候,丹尼尔

【问题讨论】:

    标签: ios keyboard uibutton dismiss


    【解决方案1】:

    您还可以在层次结构中文本字段上方的任何视图上调用[view endEditing:YES]。如果您不确定哪个文本字段具有第一响应者状态,这很有用。它还可以选择让文本字段委托停止操作(通过从 shouldEndEditing 返回 NO :) 如果您使用委托对字段进行验证,这很好。

    【讨论】:

      【解决方案2】:

      在按钮动作中写入,

      if([textField isFirstResponder]){
        [textField resignFirstResponder];
      }
      

      如果有更多文本字段,则每次开始编辑时获取当前文本字段引用,并在按钮操作中退出其响应者。

      【讨论】:

      • 谢谢!另外,我也想在用户点击屏幕时关闭键盘。我用过: UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyBoard)]; //[self.view addGestureRecognizer:tap];但是按钮操作不起作用 - 也许按钮单击被识别为对“空白屏幕”的点击?
      • @Daniel:视图是否包含任何滚动视图?
      • 是的,滚动视图和文本视图也是如此。顺便说一句...是否可以制作一个 uiscrollview 并且在其中有两个 textviews 并且 textviews 不应该能够独立滚动 - 而不是应该只滚动 uiscrollview 以便其余的 textviews 可见/显示(所以,它们也会滚动)?
      【解决方案3】:

      如果您有多个文本字段并且不知道哪个是第一响应者(或者您根本无法从编写此代码的任何位置访问文本字段),您可以在包含的父视图上调用 endEditing:文本字段。

      在 Swift 中,在相关的视图控制器中,将这一行添加到按钮功能中:

      self.view endEditing(true)
      

      【讨论】:

        【解决方案4】:

        除了 SriPriya 的回答,请在这里提供 Swift 2 风格的版本:

        if numberTextField.isFirstResponder() {
            numberTextField.resignFirstResponder()
        }
        

        请尽情享受……

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-10
          • 2023-04-10
          • 2014-07-20
          • 1970-01-01
          • 1970-01-01
          • 2013-03-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多