iPhone:跳转到uitableview中的下一个uitextfield,如何?

发布于 2024-09-01 12:55:57 字数 246 浏览 1 评论 0原文

在我的 iPhone 项目中,我使用 UITableview 和包含 UITextfields 的 UITableViewCells。我在许多应用程序中看到,可以使用下一个按钮跳转到下一个单元格中的下一个文本字段。实现这一目标的最佳方法是什么?

我的想法是获取带有正在编辑的文本字段的单元格的索引路径,然后通过 cellForRowAtIndexPath 获取下一个单元格。但是我怎样才能获得我当前正在编辑的单元格的indexPath呢?

谢谢!

In my iPhone project I'm using a UITableview with UITableViewCells containing UITextfields. I have seen in many apps that it is possible to use a next button to jump to the next textfield in the next cell. What is the best way to accomplish this?

My idea is to get the indexPath of the cell with the textfield that is being editing and then get the next cell by cellForRowAtIndexPath. But how can I get the indexPath of the cell I'm currently editing?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤君无依 2024-09-08 12:55:57
  1. 在表视图中保留对 UITextField 实例的引用。
  2. 为您的 UITextField 实例分配唯一的标记值。
  3. 在最后一个文本字段中,您可以设置其 Return 键类型,这会将键盘的 Return 键标签从“下一步”更改为“完成”: [finalTextField setReturnKeyType:UIReturnKeyDone];

UITextField 中 委托方法-textFieldShouldReturn:,遍历响应者:

- (BOOL) textFieldShouldReturn:(UITextField *)tf {
    switch (tf.tag) {
        case firstTextFieldTag:
            [secondTextField becomeFirstResponder];
            break;
        case secondTextFieldTag:
            [thirdTextField becomeFirstResponder];
            break;
        // etc.
        default:
            [tf resignFirstResponder];
            break;
    }
    return YES;
}
  1. Keep references to the UITextField instances in your table view.
  2. Assign unique tag values to your UITextField instances.
  3. In your last text field, you might set its Return key type, which changes the keyboard's Return key label from "Next" to "Done": [finalTextField setReturnKeyType:UIReturnKeyDone];

In the UITextField delegate method -textFieldShouldReturn:, walk through the responders:

- (BOOL) textFieldShouldReturn:(UITextField *)tf {
    switch (tf.tag) {
        case firstTextFieldTag:
            [secondTextField becomeFirstResponder];
            break;
        case secondTextFieldTag:
            [thirdTextField becomeFirstResponder];
            break;
        // etc.
        default:
            [tf resignFirstResponder];
            break;
    }
    return YES;
}
忆依然 2024-09-08 12:55:57

假设 UITextField 已添加到 UITableViewCell 中,如下所示,

UITableViewCell *cell;
UITextField *textField;
...
textField.tag = kTAG_TEXTFIELD;
[cell.contentView addSubview:textField];
...

获取当前索引路径

-(BOOL)textFieldShouldReturn:(UITextField *)textField {
  if([textField.superView.superView isKindOfClass:[UITableViewCell class]]) {
    UITableViewCell *cell = (UITableViewCell *)textField.superView.superView;
    NSIndexPath *indexPath = [self.myTableView indexPathForCell:cell];
  }
  ...

您可以通过下一行的 UITextField

NSIndexPath *indexPathNextRow = [NSIndexPath indexPathForRow:(indexPath.row+1) inSection:indexPath.section];
UITableViewCell *cellNextRow = (UITableViewCell *)[self.myTableView cellForRowAtIndexPath:indexPathNextRow];
UITextField *textFieldNextRow = (UITextField *)[cellNextRow.contentView viewWithTag:kTAG_TEXTFIELD];

希望它有帮助!

Assuming the UITextField was added to the UITableViewCell like below

UITableViewCell *cell;
UITextField *textField;
...
textField.tag = kTAG_TEXTFIELD;
[cell.contentView addSubview:textField];
...

You can get the current index path via

-(BOOL)textFieldShouldReturn:(UITextField *)textField {
  if([textField.superView.superView isKindOfClass:[UITableViewCell class]]) {
    UITableViewCell *cell = (UITableViewCell *)textField.superView.superView;
    NSIndexPath *indexPath = [self.myTableView indexPathForCell:cell];
  }
  ...

The next row's UITextField would then be

NSIndexPath *indexPathNextRow = [NSIndexPath indexPathForRow:(indexPath.row+1) inSection:indexPath.section];
UITableViewCell *cellNextRow = (UITableViewCell *)[self.myTableView cellForRowAtIndexPath:indexPathNextRow];
UITextField *textFieldNextRow = (UITextField *)[cellNextRow.contentView viewWithTag:kTAG_TEXTFIELD];

Hope it helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文