[英]UITableView selected row in the middle of frame
我需要将所选的行放在框架的中间。 因此,如果我选择第一行或最后一行,则此行需要位于中间,而不是剪切到表格视图的顶部(或底部)(类似于UIPickerView
)。
这是我在scrollViewWillEndDragging
代码:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
CGFloat rowHeight = [delegate rowHeightForMyPickerView:self];
CGFloat floatVal = targetContentOffset->y / rowHeight;
NSInteger rounded = (NSInteger)(lround(floatVal));
targetContentOffset->y = rounded * rowHeight;
NSLog(@"Offset: %f Float: %f Row: %d",targetContentOffset->y,floatVal,rounded);
[delegate myPickerView:self isOverRow:rounded];
}
使用此代码,我创建了捕捉效果,但rounded
不是正确的行。 将第一个和最后一个像元高度更改为双倍高度会使问题消失,但是我不喜欢这种解决方案。
UITableView
类还可以使用scrollToRowAtIndexPath:atScrollPosition:animated
方法滚动到选定的indexPath
以及scrollToRowAtIndexPath:atScrollPosition:animated
。 最好在tableView:didSelectRowAtIndexPath:indexPath
方法中,添加:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; //scrolls the selected cell to middle
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.