相关疑难解决方法(0)

在UIScrollView中查找滚动方向?

UIScrollView只允许水平滚动,我想知道用户滚动的方向(左,右).我做的是继承UIScrollView和覆盖touchesMoved方法:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesMoved:touches withEvent:event];

    UITouch *touch = [touches anyObject];
    float now = [touch locationInView:self].x;
    float before = [touch previousLocationInView:self].x;
    NSLog(@"%f %f", before, now);
    if (now > before){
        right = NO;
        NSLog(@"LEFT");
    }
    else{
        right = YES;
        NSLog(@"RIGHT");

    }

}
Run Code Online (Sandbox Code Playgroud)

但是当我移动时,这种方法有时根本不会被调用.你怎么看?

iphone cocoa-touch uiscrollview ios

176
推荐指数
12
解决办法
14万
查看次数

在scrollViewWillBeginDragging中检测UIScrollView滚动的方向

我做了足够的google,并且在发布之前我确实在stackoverflow中检查了这些帖子(在UIScrollView中查找滚动的方向?).我在iPhone应用程序中拥有动态数量的照片,正在显示UIScrollView.在任何时候,我只在滚动视图中显示3张照片.当我有4张照片时,总计:第1张照片:偏移量0.0显示第2张照片:偏移量320.0显示第3张照片:显示偏移量640.0

现在,当用户滚动到第4张照片时,滚动视图将重置为0.0偏移.如果用户试图滚动"超出"第4张照片,则滚动应仅在右向停止(因此用户不会滚动"超出").但是目前,用户'能够'滚动到最后一张照片之外; 但是,我以编程方式检测到此并重置偏移量.但它看起来并不整洁,因为用户会瞬间看到黑色背景.我想检测用户是否已经开始向右滚动(请记住,向左滚动'即'前一张'照片就可以了)scrollViewWillBeginDragging,以便我可以停止向右滚动.

我尝试了什么:

  1. 尝试使用self.scrollView.panGestureRecognizer's translationInView是行不通的,因为首先没有 panGestureRecognizer返回实例(!),尽管UIScrollView API声称如此.
  2. 检测到这一点scrollViewDidEndDecelerating是可能的,虽然它不符合我的目的.

iphone cocoa-touch ios

21
推荐指数
5
解决办法
3万
查看次数

标签 统计

cocoa-touch ×2

ios ×2

iphone ×2

uiscrollview ×1