UITableView仅反弹底部边缘
是否有可能反弹UITableView
的底部,但不是顶部? 如果是这样,请给我看代码。
我没有改变bounces
属性,而是添加到UIScrollViewDelgate
方法中:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView.contentOffset.y<=0) { scrollView.contentOffset = CGPointZero; } }
应该可以通过观察UITableview的contentOffset属性。
[_tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:NULL];
。 。 并防止偏移消极。
您可以尝试使用UIScrollViewDelegate
方法检测拖动方向并适当调整bounces
属性?
我也遇到了这个问题,我的解决scheme是:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView.contentOffset.y > 100) { scrollView.bounces = NO; }else{ scrollView.bounces = YES; } }
我在我的项目中使用这个代码,它运作良好。
快速3.1
extension YourViewController: UIScrollViewDelegate{ func scrollViewDidScroll(_ scrollView: UIScrollView) { if scrollView == tableView { let a = scrollView.contentOffset if ay <= 0 { scrollView.contentOffset = CGPoint.zero // this is to disable tableview bouncing at top. } } } }
在迅捷2.2:
func scrollViewDidScroll(scrollView: UIScrollView) { if scrollView.contentOffset.y <= 0 { scrollView.contentOffset = CGPointZero } }
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView.contentOffset.y <= 0) { scrollView.contentOffset = CGPointZero; scrollView.showsVerticalScrollIndicator = NO; } else { scrollView.showsVerticalScrollIndicator = YES; } }
@Liron Berger的解决scheme将导致VerticalScrollIndicator仍然显示,只需将showsVerticalScrollIndicator
设置为NO
即可解决此问题