UITableView在textFieldDidBeginEditing中获取indexPath:

时间:2013-07-09 14:32:53

标签: ios uitableview uitextfield nsindexpath

我有动态tableView。有几个单元格有textField

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(15,10,260,40)];
textField.delegate = self;
[cell addSubview:textField];

我正试图在indexPath中获取textFieldDidBeginEditing。这是我的代码

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    CGPoint location = [self.view.superview convertPoint:self.view.center toView:self.orderTableView];
    NSIndexPath *indexPath = [self.orderTableView indexPathForRowAtPoint:location];
    NSLog (@"IndexPath %@", indexPath);
    NSLog (@"IndexPath.ROW %i", indexPath.row);  
}

我有前4个细胞(索引0 - 3)是标准细胞。在前4个单元格之后,我可以使用UITextField动态地拥有最多3个自定义单元格。

UIViewController与UITableView一起出现后,无论我点击的UITextField是什么TableViewCell,NSLog Below都会向我显示以下内容:

2013-07-09 07:21:40.910 MyApp[2884:c07] IndexPath <NSIndexPath 0xa0a5d60> 2 indexes [0, 3]
2013-07-09 07:21:40.910 Mypp[2884:c07] IndexPath.ROW 3

如何使用调用键盘的indexPath来获取正确的UITextField个单元格?

1 个答案:

答案 0 :(得分:4)

我认为你走在正确的轨道上。但我相信你引用的那一点(视图控制器视图的中心)不会给你一个准确的位置。只要您的文本框架保留在单元格内,我相信这应该可行。

//convert the textfield's frame origin in the cell to frame origin in table view
CGPoint location = [self.tableView convertPoint:textField.frame.origin fromView:textField.superview];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];