UITableView仅反弹底部边缘

时间:2013-06-18 10:48:18

标签: iphone ios objective-c uitableview uikit

是否有可能在底部弹出UITableView,而不是顶部?如果是这样,请告诉我代码。

8 个答案:

答案 0 :(得分:38)

我没有更改bounces属性,而是将其添加到UIScrollViewDelgate方法:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y<=0) {
        scrollView.contentOffset = CGPointZero;
    }
}

答案 1 :(得分:5)

适用于swift 4

extension YourViewController: UIScrollViewDelegate{
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if scrollView == tableView {
            let a = scrollView.contentOffset
            if a.y <= 0 {
                scrollView.contentOffset = CGPoint.zero // this is to disable tableview bouncing at top.
            }
        }
    }
}

答案 2 :(得分:4)

应该可以通过观察UITableview的contentOffset属性来实现。

[_tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:NULL];

。 。并防止抵消负面。

答案 3 :(得分:2)

您可以尝试使用UIScrollViewDelegate方法检测拖动方向并适当调整bounces属性吗?

答案 4 :(得分:2)

我也遇到过这个问题,我的解决方案是:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
 if (scrollView.contentOffset.y > 100) {
     scrollView.bounces = NO;
 }else{
     scrollView.bounces = YES;
 }
}

我在我的项目中使用此代码并且运行良好。

答案 5 :(得分:1)

迅捷

func scrollViewDidScroll(_ scrollView: UIScrollView) {

     //Check to make sure this only applies to tableview 
     //and not other scrollviews inside your View/ViewController
     if scrollView.superclass == UITableView.self {
     //bounce will only be true if contentOffset.y is higher than 100
     //I set 100 just to make SURE, but you can set >= 0 too
         scrollView.bounces = scrollView.contentOffset.y > 100
     }
        
}

答案 6 :(得分:0)

在swift 2.2中:

func scrollViewDidScroll(scrollView: UIScrollView) {
    if scrollView.contentOffset.y <= 0 {
        scrollView.contentOffset = CGPointZero
    }
}

答案 7 :(得分:0)

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y <= 0) {
        scrollView.contentOffset = CGPointZero;
        scrollView.showsVerticalScrollIndicator = NO;
    } else {
        scrollView.showsVerticalScrollIndicator = YES;
    }
}

@Liron Berger的解决方案将导致VerticalScrollIndicator仍然显示,只需将showsVerticalScrollIndicator设置为NO即可解决此问题