gpt4 book ai didi

ios - UITextField - textFieldDidEndEditing 调用太迟

转载 作者:搜寻专家 更新时间:2023-10-31 22:37:36 27 4
gpt4 key购买 nike

UITextFieldDelegate 的事件序列有问题。

我有两个 UITableView A 和 B,它们由两个 UIViewController A 和 B 托管,它们本身由一个容器 View 托管,如下所示(图中省略了单元格):

Layout

Tableview B 在其单元格中有文本字段 (UITextField),并实现了以下委托(delegate)函数。

func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason)
{
if reason == .committed
{
...save content of textfield...
}
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
...save content of textfield...
return true
}

在字段中输入文本后,用户可以点击返回键或点击外部某处以保存数据。只要用户点击 View Controller B 中的某处,这就会起作用。

如果用户点击 TableView A 中的某处,则 TableView 的

tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

函数首先被调用,只有在那之后,文本字段委托(delegate)才会被调用。

tableView(_:didSelectRowAt:) 将新数据加载到 tableview B 时,这显然是一个问题。

我按照建议尝试了 textFieldShouldEndEditing here但它仍然只在之后 didSelectRowAt

被调用

我如何接收用户在任何其他事件触发之前结束编辑字段的事件?

最佳答案

我不确定您是否能够修改它当前的默认行为。您可以尝试的一种方法是在 ViewController A 的 didSelectRowAt(:) 方法中:

  1. 将单元格选择事件通知容器 VC

  2. 让容器 VC 在 View Controller B 上调用 secondChildVC.view.endEditing() 方法,这应该在代码执行从行选择方法(在第一个 VC 中)返回之前触发文本字段上的那些事件

关于ios - UITextField - textFieldDidEndEditing 调用太迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53619604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com