我是新来的迅速。我的应用使用人们上传到网络并在表格视图中显示照片的照片。
每当某些用户上传新照片时,它就会重新加载。
我有一个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()
        }
}

因此,使用此代码,键盘当然不会掉下来,但是运行了循环循环,一切都停滞了。我的问题是我如何才能等到用户完成使用文本标签(第一响应者为假)。
谢谢

最佳答案

您可以在两个位置有条件地重新加载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()
    }

}

关于ios - 如何快速等待文本标签的firstResponder为false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30211213/

10-10 20:31