第一响应者未改变

时间:2015-10-26 01:38:31

标签: ios objective-c iphone uitableview

目前我在我的故事板中有这个tableview我在我的表中有这个结构 enter image description here enter image description here

我已经在每个文本字段中放置了一个标签0 - 6,我有这段代码

-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    if(textField.returnKeyType == UIReturnKeyNext) {
        NSInteger nextTag = textField.tag + 1;
        UIResponder* nextResponder = [textField viewWithTag:nextTag];
        [nextResponder becomeFirstResponder];

    } else if (textField.returnKeyType == UIReturnKeyDone) {
        [textField resignFirstResponder];
    }
    return YES;
}

但由于某种原因,它没有改变到下一个文本字段的任何关于我做错的想法?

2 个答案:

答案 0 :(得分:1)

根据the documentationviewWithTag:的返回值为:

  

返回值

     

接收者层次结构中具有tag属性的视图   匹配tag参数中的值。

您的textField似乎不太可能是其他文本字段的父视图。您应该在表视图或视图控制器的view属性中调用它。

答案 1 :(得分:1)

您可以先尝试重新签署旧的第一响应者:

[textField resignFirstResponder];
[nextResponder becomeFirstResponder];

有时它有点棘手,如果这不起作用,你可以试试[textField resignFirstResponder];工作...如果它工作,它是[nextResponder becomeFirstResponder];这不起作用你总是可以延迟尝试:[nextResponder performSelector:@selector(becomeFirstResponder)afterDelay:0.1];

希望它有所帮助...