UITableView没有滚动到becomeFirstResponder

时间:2015-11-13 23:28:59

标签: ios objective-c uitableview uitextfield

我知道关于此主题的堆栈溢出有很多问题,但我还没有找到我的具体问题的答案。我有一个包含多个部分的UITableView。每个单元格都有一个给定标记的UITextField。在我的textFieldShouldReturn函数中,我有一个switch语句,它调用下一个单元格的textField成为第一个基于它的标记响应者。

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

switch (textField.tag) {
    case FIRST_NAME_FIELD_TAG:
        [_catv.lastNameTextField becomeFirstResponder];
        break;
    case LAST_NAME_FIELD_TAG:
        [_catv.emailTextField becomeFirstResponder];
        break;
    case EMAIL_FIELD_TAG:
        [_catv.passwordTextField becomeFirstResponder];
        break;
    case PASSWORD_FIELD_TAG:
        [_catv.phoneNumberTextField becomeFirstResponder];
        break;
    case PHONE_NUMBER_FIELD_TAG:
        [_catv.phoneNumberTextField resignFirstResponder];
        [self createAccount];
        break;
    default:
        break;
}
return NO;

}

一切都很完美,直到我到达键盘下方的单元格(不可见)。然后回归似乎没有做任何事情,虽然它被调用。如果我手动滚动到下一个单元格,那么单元格才会成为第一个响应者。我希望自动将单元格滚动到键盘上方。我认为问题可能是每个部分开头的分隔标题视图,但我不能告诉你。任何见解都会非常有用。

1 个答案:

答案 0 :(得分:1)

可能不是最佳解决方案,但由于UITableView继承了UIScrollView,您是否考虑过以编程方式滚动到相应的单元格然后分配响应者?

也许试试:

[_tableView scrollRectToVisible:CGRectMake(X,Y,WIDTH,HEIGHT)
                           animated:YES];