如何在 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()
}
}
我是 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()
}
}