目前我有一个带有自定义单元格的UITableView,并且在每个单元格中都有一个UITextField,问题是UIKextField有时会覆盖UITextField。
所以现在我有了UIKeyboard的Y坐标,我的UITableView与单元格一起正常运行。
所以我怎么能使用那个Y坐标(float),以便将我的UITableView滚动到那个Y坐标加上单元格的高度,以便将它放在我的UIKeyboard上面?
当键盘隐藏时,我如何将UITableView重置到它所处的正常位置?
任何建议都将不胜感激!
谢谢!
CustomCell *cell = (CustomCell*)[[thetextField superview] superview];
CGRect cellRect = [cell convertRect:cell.frame toView:self.view];
float bottomCell = cellRect.origin.y - cellRect.size.height;
if (bottomCell >= keyboardY) {
NSIndexPath *indexPath = [thetableView indexPathForCell:cell];
[thetableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
答案 0 :(得分:2)
UITableView
的一个或另一个
- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
- (void)scrollToNearestSelectedRowAtScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
我猜测控件没有进入if语句。考虑跳过y坐标检查,而不管它只是滚动表视图。
CustomCell *cell = (CustomCell *)[[theTextField superview] superview];
NSIndexPath *indexPath = [theTableView indexPathForCell:cell];
[theTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
好的,如果您确定它已被调用,那么请确保您的indexPath不是nil,如果cell不在tableView中或者它不是一个单元格,则可能会发生这种情况。
答案 1 :(得分:0)
只要显示键盘,UITableView就会自行调整。
但是,如果您未将自定义单元格的UITableViewCellSelectionStyle
设置为UITableViewCellSelectionStyleNone
,则不会执行此操作。
我使用下面的代码解决了。
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];