我有UITableView的问题。在以下情况之后它不会隐藏滚动指示器:
1)快速滚动
2)然后击中桌子的顶部或底部。
这是截图。
如何确保滚动指示器按预期正确隐藏?
请注意弹跳已关闭。我也不想隐藏滚动指示器,我只是希望它在滚动停止在顶部或底部时按预期消失。
编辑:此问题似乎是由将视图控制器设置automaticallyAdjustsScrollViewInsets
设置为false
引起的。似乎需要设置以下3件事来重现问题:
1)表格视图退回需要关闭
2)视图控制器设置automaticallyAdjustsScrollViewInsets
到false
(这是为了解决滚动指示器看起来不正确的另一个问题)
3)UIViewController本身的视图不应该是表视图,表视图必须是子视图。
在viewDidLoad
中看起来像这样:
self.view_table = [[UITableView alloc] initWithFrame:self.view.frame];
self.view_table.bounces = false;
self.automaticallyAdjustsScrollViewInsets = false;
此外,表格视图的内容需要大于其框架的高度。
答案 0 :(得分:9)
UITableView继承自UIScrollView,因此您需要使用UIScrollView的属性:
Property: showsVerticalScrollIndicator
A Boolean value that controls whether the vertical scroll indicator is visible.
答案 1 :(得分:3)
试试这个:
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
if (!scrollView.bounces) {
targetContentOffset->y = -1;//Scrollbar does not move here, because bounces is disabled, but scrollbar can hidden.
}
}
答案 2 :(得分:2)
执行以下步骤。
答案 3 :(得分:0)
根据范亚楠的回答,我得到了答案。
在UITableViewDelegate
中:
的目标C 强>:
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
if (!scrollView.bounces) {
if(targetContentOffset->y <= 1)
{
targetContentOffset->y = 0.01;
}
else if(targetContentOffset->y >= scrollView.contentSize.height - scrollView.height)
{
targetContentOffset->y = scrollView.contentSize.height - scrollView.height - 0.01;
}
}
}
Swift 4:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
guard !scrollView.bounces else {
return
}
if(targetContentOffset.pointee.y <= 1)
{
targetContentOffset.pointee.y = 0.01;
}
else if(targetContentOffset.pointee.y >= scrollView.contentSize.height - scrollView.height)
{
targetContentOffset.pointee.y = scrollView.contentSize.height - scrollView.height - 0.01;
}
}
如果表格视图滚动到顶部或底部,则此代码会使其停止非常接近但不会结束。这允许滚动指示器消失。
答案 4 :(得分:0)
在viewwillLoad() 使tableView.showsVerticalScrollIndicator = false
禁用tableView的滚动操作视图中的滚动指示器