3

我对 UITableView 有疑问。之后它不会隐藏滚动指示器:

1) 快速滚动

2)然后击中桌子的顶部或底部。

这是一个屏幕截图。

不断显示滚动条的屏幕截图

如何确保滚动指示器按预期正确隐藏?

请注意,弹跳已关闭。我也不想仅仅隐藏滚动指示器,我只是希望它在滚动停止在顶部或底部时按预期消失。

编辑:这个问题似乎是由将视图控制器设置设置automaticallyAdjustsScrollViewInsetsfalse. 似乎需要设置以下 3 件事来重现该问题:

1)表格视图反弹需要关闭

2)视图控制器设置automaticallyAdjustsScrollViewInsetsfalse(这是为了解决滚动指示器看起来完全不正确的另一个问题)

3) UIViewController 本身的视图不应该是表视图,表视图必须是子视图。

看起来viewDidLoad像这样:

self.view_table = [[UITableView alloc] initWithFrame:self.view.frame];
self.view_table.bounces = false;
self.automaticallyAdjustsScrollViewInsets = false;

此外,表格视图的内容需要大于其框架的高度。

4

5 回答 5

9

UITableView inherits from UIScrollView, so you'll need to use UIScrollView's properties:

Property: showsVerticalScrollIndicator
A Boolean value that controls whether the vertical scroll indicator is visible.

Take a look at the documentation.

于 2012-10-28T17:57:53.913 回答
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.
    }
}
于 2013-09-02T13:32:38.817 回答
2

Do the Follwoing steps.

  1. Go to XIB
  2. select the Respective table
  3. Go to Properties and Disable the Horizontal and Vertical Scrollers.
于 2012-10-28T17:52:57.103 回答
1

根据范亚楠的回答,我有一个答案。

UITableViewDelegateObjective-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;
        }
    }
}

斯威夫特 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;
    }
}

如果表格视图滚动到顶部或底部,则此代码会使其非常接近但不完全停止。这允许滚动指示器消失。

于 2016-04-30T02:52:00.323 回答
0

在 viewwillLoad() 中使 tableView.showsVerticalScrollIndicator = false

在 tableView 的滚动动作视图中禁用滚动指示器

于 2019-09-12T03:40:04.803 回答