Iphone 移动到分组表视图中不同单元格中的下一个UITextField

Iphone 移动到分组表视图中不同单元格中的下一个UITextField,iphone,ios,objective-c,xcode,ipad,Iphone,Ios,Objective C,Xcode,Ipad,我有一个添加了分组tableview的ViewController。某些单元格包含文本字段。当用户按下返回键时,我想将第一个响应程序切换到单元格列表中的下一个文本字段。但是,我无法让它工作,我也无法判断我是否选择了不正确的单元格或不正确的文本字段 我正在cellForRowAtIndexPath中使用以下内容设置我的标记 cell.tag = ((indexPath.section + 1) * 10) + indexPath.row; 这将创建一个标记,其中十位为节值,一位为行值。即标签11

我有一个添加了分组tableview的ViewController。某些单元格包含文本字段。当用户按下返回键时,我想将第一个响应程序切换到单元格列表中的下一个文本字段。但是,我无法让它工作,我也无法判断我是否选择了不正确的单元格或不正确的文本字段

我正在cellForRowAtIndexPath中使用以下内容设置我的标记

cell.tag = ((indexPath.section + 1) * 10) + indexPath.row;
这将创建一个标记,其中十位为节值,一位为行值。即标签11为第0节第1行

这是我的textfield应该返回的代码

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{

[textField resignFirstResponder];

UITableViewCell *cell = (UITableViewCell *)textField.superview;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

cell = [self tableView:_tableView cellForRowAtIndexPath:indexPath];

if (indexPath.section == 0)
{
    if (indexPath.row == 0)
    {
        [[cell viewWithTag:((indexPath.section + 1) * 10) + (indexPath.row + 1)] becomeFirstResponder];
    }
    if (indexPath.row == 1)
    {
        [[cell viewWithTag:((indexPath.section + 2) * 10)] becomeFirstResponder];
    }
}
return YES;
}

最后一点要注意的是,目前新标记的增量是硬编码的,但是我希望能够在每次不硬编码实际值的情况下转到新标记。这可能吗?

如果您的所有单元格都包含一个UITextField,我认为您可以将UITableViewCell子类化,并添加一个引用单元格文本字段的属性

但是你说只有一些单元格包含文本字段,所以另一个选择是创建一个指向UITextFields的指针数组(我知道了)。然后,用户按Return键将按如下方式循环:

- (BOOL) textFieldShouldReturn:(UITextField*)textField {
    NSUInteger currentIndex = [arrayOfTextFields indexOfObject:textField] ;
    if ( currentIndex < arrayOfTextFields.count ) {
        UITextField* nextTextField = (UITextField*)arrayOfTextFields[currentIndex+1] ;
        [nextTextField becomeFirstResponder] ;
    }
    else {
        [textField resignFirstResponder] ;
    }
}
-(BOOL)textField应返回:(UITextField*)textField{
NSUTEGER currentIndex=[arrayOfTextFields indexOfObject:textField];
如果(currentIndex
如果所有单元格都包含一个UITextField,我认为您可以将UITableViewCell子类化,并添加一个引用单元格文本字段的属性

但是你说只有一些单元格包含文本字段,所以另一个选择是创建一个指向UITextFields的指针数组(我知道了)。然后,用户按Return键将按如下方式循环:

- (BOOL) textFieldShouldReturn:(UITextField*)textField {
    NSUInteger currentIndex = [arrayOfTextFields indexOfObject:textField] ;
    if ( currentIndex < arrayOfTextFields.count ) {
        UITextField* nextTextField = (UITextField*)arrayOfTextFields[currentIndex+1] ;
        [nextTextField becomeFirstResponder] ;
    }
    else {
        [textField resignFirstResponder] ;
    }
}
-(BOOL)textField应返回:(UITextField*)textField{
NSUTEGER currentIndex=[arrayOfTextFields indexOfObject:textField];
如果(currentIndex
将标签设置为文本字段而不是单元格

yourTextField.tag = ((indexPath.section + 1) * 10) + indexPath.row;

将标记设置为文本字段而不是单元格

yourTextField.tag = ((indexPath.section + 1) * 10) + indexPath.row;

好的,这个方法可以正确地切换焦点,但是我希望在切换焦点时键盘离开。当前,它会一直显示在屏幕上,直到到达最后一个文本框。强制将数据输入到所有不必要的文本字段中。如果您希望在用户点击Return时键盘消失,则您的
textField应该返回的唯一操作是
[textField resignFirstResponder]。这回答了你的问题吗?好的,这个方法可以正确地切换焦点,但是我希望在切换焦点时键盘离开。当前,它会一直显示在屏幕上,直到到达最后一个文本框。强制将数据输入到所有不必要的文本字段中。如果您希望在用户点击Return时键盘消失,则您的
textField应该返回的唯一操作是
[textField resignFirstResponder]。这回答了你的问题吗?