禁用UIScrollView在屏幕顶部的弹跳效果。

11

我的应用程序中有一个UIScrollView,并启用了垂直弹跳。我需要在屏幕底部弹跳,但不在屏幕顶部启用。

我知道如何检测滚动视图,代码如下:

  (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {

  // no bounce if scrollView has reached the top of the screen ??
  }
4个回答

31
尝试根据内容偏移量设置bounces属性,使其随着滚动视图的滚动而变化。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    scrollView.bounces = (scrollView.contentOffset.y > 100);
}

我想了解这个值100是从哪里来的?为什么恰好是100?@Wain,你有解释吗? - Bruno Bieri
@BrunoBieri 这是从用户测试中任意选择的值,以获得正确的感觉并防止误报。视图的大小意味着不需要小数位数来实现可达到的精度水平。根据滚动视图和内容的大小,许多值可能都适用... - Wain
好的,我明白了。谢谢你。从原始答案中我没有看出来。这对我意味着包含视图至少需要有高度100才能使此代码工作。 - Bruno Bieri

4

SWIFT

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    //disable bounce only at the top of the screen
    scrollView.bounces = scrollView.contentOffset.y > 100
}

0

仅用于拉取:

extension YourViewController: UIScrollViewDelegate {
    
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        scrollView.contentOffset.y = min(-88, scrollView.contentOffset.y) // -88 or other point
    }
}

0

在滚动发生之前满足条件是正确的。

override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
   tableView.bounces = tableView.contentOffset.y > 100
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接