我知道关于此主题的堆栈溢出有很多问题,但我还没有找到我的具体问题的答案。我有一个包含多个部分的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;
}
一切都很完美,直到我到达键盘下方的单元格(不可见)。然后回归似乎没有做任何事情,虽然它被调用。如果我手动滚动到下一个单元格,那么单元格才会成为第一个响应者。我希望自动将单元格滚动到键盘上方。我认为问题可能是每个部分开头的分隔标题视图,但我不能告诉你。任何见解都会非常有用。
答案 0 :(得分:1)
可能不是最佳解决方案,但由于UITableView继承了UIScrollView,您是否考虑过以编程方式滚动到相应的单元格然后分配响应者?
也许试试:
[_tableView scrollRectToVisible:CGRectMake(X,Y,WIDTH,HEIGHT)
animated:YES];