如何在 swift 中等到文本标签的 firstResponder 为 false

how to wait until firstResponder of text label is false in swift

我是 swift 的新手。我的应用程序使用人们上传到网络的照片并在 table 视图中显示照片。 每当某些用户上传新照片时,它就会重新加载。 我有一个 UITextField,当您按下它时,键盘会升起。我的问题是每当 reloadView 发生时(当新照片到达时)它就会关闭 我想要做的是检查 UITextField 是否是第一个识别器,如果是,我想等待重新加载,直到它不是第一个识别器。

func refreshView()
{
        dispatch_async(dispatch_get_main_queue()) { () -> Void in
            while (self.dataSource.writeSomethingTextLabel.isFirstResponder()) {
                //need to wait somehow for notification that it is not first responder anymore
            }
            self.tableView.reloadData()
        }
}

因此,使用此代码,键盘当然不会关闭,但 wile 循环运行并且一切都卡住了。我的问题是如何等到用户完成使用文本标签(第一响应者为假)。 谢谢

 @IBAction func viewTapped(sender : AnyObject) {
       totalTextField.resignFirstResponder()
   }

您可以在两个地方有条件地重新加载 tableView:新数据到达时和 textField 结束编辑时:

@class YourViewController: UIViewController, UITextFieldDelegate {

    var needsToReloadTableView = false;

    func reloadTableViewIfNeeded() {
        if needsToReloadTableView {
            self.tableView.reloadData()
            needsToReloadTableView = false
        }
    }

    func gotNewData() {
        needsToReloadTableView = true

        if !self.textField.isFirstResponder {
            reloadTableViewIfNeeded()
        }
    }

    func textFieldDidEndEditing(textField:UITextField) {
        reloadTableViewIfNeeded()
    }

}