如果tableview包含少于10个左右的单元格,你会如何强制UITableViewCell滚动到顶部?我支持在tableview处于编辑模式时编辑tableView单元格中的托管对象上下文。不用说,如果一个单元格位于tableview的底部,当用户去编辑事件的标题或位置时,它会被键盘阻挡。我试过像这样的解决方案:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
if(_selectedIndex == indexPath.row){
_selectedIndex = -1;
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
return;
}
if(_selectedIndex >= 0){
NSIndexPath *previous = [NSIndexPath indexPathForRow:_selectedIndex inSection:0];
_selectedIndex = indexPath.row;
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:previous]
withRowAnimation:UITableViewRowAnimationFade];
}
_selectedIndex = indexPath.row;
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[tableView setContentOffset:CGPointMake(0, [tableView rowHeight]*indexPath.row) animated:YES];
}
但是这并没有将tableview保留在contentOffset上。它将捕捉到顶部,然后快照回来
答案 0 :(得分:12)
我喜欢以下解决方案,因为如果你有一个,它也会滚动到标题视图的顶部。
[self.tableView setContentOffset:CGPointZero animated:YES];
答案 1 :(得分:4)
您可能应该在UITableView上使用此方法:
-(void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated
基本上你要做的是当你的UITableViewDelegate的[tableView:didSelectRowAtIndexPath:]方法被调用时,你将该选择的索引传递给上面的方法并设置scrollposition = UITableViewScrollPositionTop。
这会将所选单元格滚动到屏幕顶部,而不是键盘。
答案 2 :(得分:2)
答案 3 :(得分:2)
UITableView是UIScrollView的子类,因此您也可以使用:
[mainTableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
答案 4 :(得分:1)
滚动到顶部tableView
tableView.setContentOffset(CGPoint(x: 0, y: -tableView.contentInset.top), animated: true).
答案 5 :(得分:0)
- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;
样本是:
[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:0 animated:YES];
答案 6 :(得分:0)
这适用于我的情况,也可以滚动到headear的顶部如果你有:
**myTablView.scrollRectToVisible((myTablView.rectForHeader(inSection: 0), to: myTablView.superview).0, animated: true)**
https://developer.apple.com/documentation/uikit/uitableview/1614872-rectforheader
答案 7 :(得分:0)
针对您的问题的更多指定答案:
captureTimeout