我正在向我的应用添加滑动手势识别器
- (void)createGestureRecognizers
{
//adding swipe up gesture
UISwipeGestureRecognizer *swipeUpGesture= [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeUpGesture:)];
[swipeUpGesture setDirection:UISwipeGestureRecognizerDirectionUp];
[self.view addGestureRecognizer:swipeUpGesture];
[swipeUpGesture release];
}
处理滑动事件的方法:
-(IBAction)handleSwipeUpGesture:(UISwipeGestureRecognizer *)sender
{
NSLog(@"handleSwipeUpGesture: called");
}
我如何在这里计算偏移量?移动视图?
答案 0 :(得分:8)
UISwipeGestureRecognizer用于检测离散滑动手势 - 它只会在滑动完成后触发您的动作一次 - 因此,如果您询问手指移动的偏移或距离,您可能想要查看创建子类的子类UIGestureRecognizer或使用UIPanGestureRecognizer获取连续的手势信息。不确定你究竟想做什么,但是UIScrollView也可以按顺序排列......
答案 1 :(得分:8)
UISwipeGestureRecognizer的UIGestureRecognizer抽象超类具有以下方法
- (CGPoint)locationInView:(UIView *)view
- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView *)view
允许您知道手势在视图中的位置,但这是一个离散的手势识别器(无论您想要调用它,都会以给定的“平移”或“偏移”触发,您无法控制) 。听起来你正在寻找连续控制,为此你想要一个UIPanGestureRecognizer,它有以下方法(为你做翻译计算)
- (CGPoint)translationInView:(UIView *)view
- (void)setTranslation:(CGPoint)translation inView:(UIView *)view
- (CGPoint)velocityInView:(UIView *)view
当手势不断展开时,您将获得快速回调。