我知道有很多关于此主题的堆栈溢出问题,但我无法找到我的具体问题的答案。我有一个包含多个部分的 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;
一切正常,直到单元格位于键盘下方(不可见)。然后返回似乎没有做任何事情,尽管它正在被调用。如果我手动滚动到下一个单元格,那么该单元格才会成为第一响应者。我希望让单元格自动滚动到键盘上方。我认为问题可能出在每个部分开头的分隔标题 View ,但我无法分辨。任何见解都会非常有帮助。
最佳答案
可能不是最佳解决方案,但由于 UITableView 继承了 UIScrollView,您是否考虑过以编程方式滚动到适当的单元格,然后分配响应程序?
也许试试:
[_tableView scrollRectToVisible:CGRectMake(X,Y,WIDTH,HEIGHT)
animated:YES];
关于ios - UITableView 不在 becomeFirstResponder 上滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703351/