【问题标题】:UIScrollView tends to "snap" back to a previous positionUIScrollView 倾向于“快速”回到之前的位置
【发布时间】:2009-10-05 15:56:01
【问题描述】:

我正在使用 UIScrollerView,我发现当我滚动它时它倾向于“快速”回到之前的位置。

我想模拟 UItableView 的滚动条停留在用户松开手指的位置时的行为。

属性集:

[scroller setCanCancelContentTouches:NO];
scroller.clipsToBounds = YES;   
[scroller setScrollEnabled:YES];
scroller.userInteractionEnabled = YES;
scroller.alwaysBounceHorizontal = YES;
scroller.alwaysBounceVertical= NO;
scroller.showsVerticalScrollIndicator = NO;
scroller.scrollsToTop = NO;
scroller.bounces = NO;
scroller.pagingEnabled = NO;

【问题讨论】:

    标签: iphone uiscrollview


    【解决方案1】:

    弹回有几个可能的原因。

    一种可能是您将 pagingEnabled 设置为 YES,这意味着当用户松开手指时,它会捕捉到最近的页面边界。

    另一个是您的 contentSize 设置不正确。如果您实际上可以滚动到顶部和底部并将其留在那里而不弹开,这不是问题。

    【讨论】:

    • 谢谢马布兹!!我粘贴了滚动条的配置,我只是更改了 pagingEnabled 并且我得到了相同的行为:(再次感谢 :) Alejandra
    • 不客气,但我不确定我是否理解。这解决了您的问题吗?还是您需要更多帮助?
    • 你可以滚动到底部或顶部并让它停留在那个位置还是总是弹开?
    • 我尝试了您的建议,但没有解决问题:(,我可以从底部滚动到顶部,但如果我想留在滚动条中间的某个点向后/向前移动到另一个位置。
    • 谢谢 mahboudz !!!!!!!!!,你的推荐是对的。我在代码的其他部分将 pagingEnabled 属性覆盖为 YES :$,非常感谢您的帮助 :) Alejandra
    【解决方案2】:
    - (void)scrollViewDidScroll:(UIScrollView *)sender {
        int scrollDirection;
        if (lastContentOffset > self.scrollView.contentOffset.x){
            scrollDirection = RIGHT;
    
    
    
            NSLog(@"right");
        }
        else if (lastContentOffset < self.scrollView.contentOffset.x) {
            scrollDirection = LEFT;
            NSLog(@"left");
            lastContentOffset = self.scrollView.contentOffset.x;
    
    
    
        }
    
    }
    
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    
        lastContentOffset = self.scrollView.contentOffset.x;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      相关资源
      最近更新 更多