我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)
但是当我移动时,这种方法有时根本不会被调用.你怎么看?
我做了足够的google,并且在发布之前我确实在stackoverflow中检查了这些帖子(在UIScrollView中查找滚动的方向?).我在iPhone应用程序中拥有动态数量的照片,正在显示UIScrollView.在任何时候,我只在滚动视图中显示3张照片.当我有4张照片时,总计:第1张照片:偏移量0.0显示第2张照片:偏移量320.0显示第3张照片:显示偏移量640.0
现在,当用户滚动到第4张照片时,滚动视图将重置为0.0偏移.如果用户试图滚动"超出"第4张照片,则滚动应仅在右向停止(因此用户不会滚动"超出").但是目前,用户'能够'滚动到最后一张照片之外; 但是,我以编程方式检测到此并重置偏移量.但它看起来并不整洁,因为用户会瞬间看到黑色背景.我想检测用户是否已经开始向右滚动(请记住,向左滚动'即'前一张'照片就可以了)scrollViewWillBeginDragging,以便我可以停止向右滚动.
我尝试了什么:
self.scrollView.panGestureRecognizer's
translationInView是行不通的,因为首先没有
panGestureRecognizer返回实例(!),尽管UIScrollView API声称如此.scrollViewDidEndDecelerating是可能的,虽然它不符合我的目的.