ios - 快速执行异步任务后键盘不会关闭

标签 ios swift keyboard dismiss

<分区>

我正在使用 UItextField 执行搜索任务,我点击搜索按钮,它应该开始调用 web api 的异步任务并关闭键盘。但键盘仍然存在。这是代码

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

   attemptPost { (success) in
       DispatchQueue.main.async {
        spinner.stopAnimation(self)
        btnOk.isEnabled = true
        btnCancel.isEnabled = true
    }

     // after this keyboard should dismiss but does not do so
      return true
}

func attemptPost(_ completion:@escaping (Bool)->()) {
    // some code
}

我希望键盘在我们点击搜索按钮后关闭,异步任务也应该开始。

最佳答案

您必须辞去第一响应者的职务。

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

   attemptPost { (success) in
       DispatchQueue.main.async {
        spinner.stopAnimation(self)
        btnOk.isEnabled = true
        btnCancel.isEnabled = true
    }

   textField.resignFirstResponder()
      return true
}

参见 https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619603-textfieldshouldreturn 的讨论

关于ios - 快速执行异步任务后键盘不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635311/

相关文章:

wpf - WebBrowser 控制键盘和焦点行为

ios - Swift 支持继承类型

ios - 对象加载 UIImage 使用 swift 使程序执行崩溃

ios - .dylib 文件丢失

ios - 自动布局:标题 View 逐渐包含 UILabel + UIButton

javascript - 使用 iframe 和 ontouchstart 的 Mobile Safari 中的文本选择错误

swift - NavigationView SwiftUI 在 iPad 中显示 Split View

ios - UITableView 滚动后单元格 UIProgressView 不更新

swift - 使用数据源遍历每个 tableView 单元格

ios - 代码不解除键盘