gpt4 book ai didi

iphone - 在 UITableView 中实现 Prev./Next 按钮,使第一响应者成为不可见单元格中的 UITextField

转载 作者:可可西里 更新时间:2023-11-01 03:42:04 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个 UITabeView,每个单元格内都有 UITextField。但是,我在实现上一个/下一个按钮以使上一个/下一个 UITableViewCell 中的文本字段成为第一响应者时遇到了麻烦。

我已经将 UITableViewCell 类子类化,让它在按下 prev./next 按钮时调用它的 delegate 的某个方法,并将单元格本身作为此方法的一个参数(因此我可以获得其索引路径以计算哪个是其文本字段必须成为第一响应者的单元格的索引路径)

在委托(delegate)方法I的实现中:

  • 获取按下按钮的单元格的索引路径
  • 从该单元格的索引路径中添加或减去 1(取决于按下的按钮)
  • 使用 TableView 上的 -cellForRowAtIndexPath: 方法获取其文本字段必须成为第一响应者的单元格
  • 让文本框成为第一响应者

问题在于 -cellForRowAtIndexPath: 方法仅在单元格可见时才返回该单元格。因此,当单元格不可见时,它将返回 nil 并且上述算法将不起作用,而当单元格在屏幕上时,它将正常工作。

这是我的上一个代码。按钮,前提是 MUInfoMateriaTableViewCell 是我的 UITableViewCell 子类,并且它有一个返回其文本字段的 textField 属性:

- (void)prevButtonPressedInCell:(MUInfoMateriaTableViewCell *)cell
{
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
NSIndexPath *previousIndexPath = [NSIndexPath indexPathForRow:indexPath.row-1 inSection:indexPath.section];

MUInfoMateriaTableViewCell *newCell = (MUInfoMateriaTableViewCell *)[self.tableView cellForRowAtIndexPath:previousIndexPath];
[newCell.textField becomeFirstResponder];
}

有什么方法可以“获取”一个不可见的单元格,以便我可以将其文本字段设置为第一响应者?或者你能建议我另一种算法来解决这个问题吗?

最佳答案

您可以通过多步骤流程解决此问题:

  • 跟踪包含所需文本字段的单元格以成为第一响应者
  • 计算要显示的单元格的 NSIndexPath 并调用 [self.tableView scrollToRowAtIndexPath:atScrollPosition:animated:] 使其进入 View
  • 实现 tableView:willDisplayCell:forRowAtIndexPath: 以在所需单元格变为可见且与所需单元格或索引路径匹配时调用 becomeFirstResponder

最后一步很重要,因为如果接收器不是任何窗口的 subview ,调用 becomeFirstResponder 不会执行任何操作。

关于iphone - 在 UITableView 中实现 Prev./Next 按钮,使第一响应者成为不可见单元格中的 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911513/

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