UITableView 没有在 becomeFirstResponder 上滚动
Posted
技术标签:
【中文标题】UITableView 没有在 becomeFirstResponder 上滚动【英文标题】:UITableView not scrolling on becomeFirstResponder 【发布时间】:2015-11-13 23:28:58 【问题描述】:我知道关于这个主题有很多关于堆栈溢出的问题,但我无法找到我的具体问题的答案。我有一个包含多个部分的 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】:可能不是最佳解决方案,但是由于 UITableView 继承了 UIScrollView,您是否考虑过以编程方式滚动到适当的单元格然后分配响应者?
或许可以试试:
[_tableView scrollRectToVisible:CGRectMake(X,Y,WIDTH,HEIGHT)
animated:YES];
【讨论】:
我最终选择了 scrollToRowAtIndexPath,得到了 textField 所在单元格的 indexPath,但想法相同。以上是关于UITableView 没有在 becomeFirstResponder 上滚动的主要内容,如果未能解决你的问题,请参考以下文章
UITableView,UILabel 文本颜色在选择行时没有改变? [关闭]
为啥这个 UIView 没有出现在 UITableView 前面?
在 UITableView 上 reloadData 后文本字段没有被选中