UIPanGestureRecognizer:在滑动结束时检测触摸位置

Posted

技术标签:

【中文标题】UIPanGestureRecognizer:在滑动结束时检测触摸位置【英文标题】:UIPanGestureRecognizer: detect touch location at end of swipe 【发布时间】:2015-01-10 17:53:15 【问题描述】:

我在 touchesEnded 方法中调用了一个名为 addProjectile 的方法。 addProjectile 接收 touchesEnded 方法接收到的触摸的 NSSet。为简单起见,我只将相关代码发布到我的问题中。所以,要明确一点:

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
    [self addProjectile:touches]; 
-(void) addProjectile:(NSSet *)touches //do stuff 

我想在名为 swipeRight 的 UIPanGestureRecognizer 方法的末尾调用 addProjectile 并发送正确的 NSSet 触摸。

-(void)swipedRight:(UIPanGestureRecognizer *)recognizer 
    CGPoint panned=[recognizer translationInView:self.view];
    if(panned.x>50)//do stuff 
    else 
    NSSet *touches; <-- this is what I need to get
    [self addProjectile:touches];

所以我的问题是如何在 swipedRight: 结束时获得正确的 NSSet 触摸(这将是用户拿起他/她的手指的位置)以正确执行 addProjectile 方法。

【问题讨论】:

【参考方案1】:

看看UIGestureRecognizerState。这就是你所需要的。

示例代码(假设您只需要用户完成平移即抬起手指时的触摸点):

-(void)swipedRight:(UIPanGestureRecognizer *)panGesture 

    if ([panGesture state] == UIGestureRecognizerStateEnded) 

        //User touch has ended

        CGPoint touchUpPoint = [panGesture translationInView:self.view]; // or `locationInView:`

        NSLog(@"__TOUCH_END_POINT__ = %@", NSStringFromCGPoint(touchUpPoint));
    

【讨论】:

正是我需要的

以上是关于UIPanGestureRecognizer:在滑动结束时检测触摸位置的主要内容,如果未能解决你的问题,请参考以下文章

如何使用步进滑块在滑块拇指上添加 UILabel?

歌曲不会在滑块拖动 iOS 上快进

在 wxPython 中,如何使用 sizers 在滑块下方左右对齐静态文本?

使用小部件测试在滑块中选择值

tvOS 手势识别器在滑出屏幕后停止工作

触摸按钮时无法在滑出菜单中推动视图控制器