Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将焦点从UITextField切换到UITextView时,为什么UITableView会锁定?_Ios_Swift_Uitableview_Cocoa Touch - Fatal编程技术网

Ios 将焦点从UITextField切换到UITextView时,为什么UITableView会锁定?

Ios 将焦点从UITextField切换到UITextView时,为什么UITableView会锁定?,ios,swift,uitableview,cocoa-touch,Ios,Swift,Uitableview,Cocoa Touch,我有一个UITableViewController,用于通过自定义UITableViewCells呈现一系列问题。每个UITableViewCell都有一个用于数据输入的UITextField和一个用于添加与该问题相关的任何必要注释的UITextView。当UITextField调用TextFieldDiEndediting时,它会执行一些计算,然后重新加载tableView数据。除了用户将焦点从UITextField切换到UITextField的情况外,其他情况都很好。在这些情况下,应用程序会

我有一个UITableViewController,用于通过自定义UITableViewCells呈现一系列问题。每个UITableViewCell都有一个用于数据输入的UITextField和一个用于添加与该问题相关的任何必要注释的UITextView。当UITextField调用TextFieldDiEndediting时,它会执行一些计算,然后重新加载tableView数据。除了用户将焦点从UITextField切换到UITextField的情况外,其他情况都很好。在这些情况下,应用程序会锁定几秒钟,CPU将达到100%。以下是相关代码:

func textFieldDidEndEditing(textField: UITextField) {
    //println("Reloading table")
    self.answer = textField.text
    self.updateCalculations()
    self.tableView?.reloadData()
}
这仅在从UITextField移动到UITextView时发生。移动到另一个UITextField不会导致任何问题,从UITextView移动到UITextField也不会导致任何问题

如果我将所有这些移动到textfield,应该取消锁定停止,但重载数据似乎不会触发。我想这可能是我使用的计算函数,但如果我去掉它,问题仍然会出现。据我所知,在切换到UITextView时调用reloadData form DiEndediting时会出现某种挂断


有什么想法吗?

试着像这样将重载数据分派到主队列:dispatch_async(dispatch_get_main_queue(),{()->Void in self.tableView?.reloadData()})在textfield中的主线程上执行重载数据shouldendediting可以正确执行重载,但它有一个不幸的副作用,即导致与在textfielddidediting函数中使用时相同的应用程序锁定。到目前为止,似乎在键盘打开时调用tableView.reloadData()可能不是一件好事。我想知道是否有更合适的方法调用reloadData()来更新其他单元格。