5

我试图在左下位置滑动东西(意味着在左和下之间)。但 UISwipeGesture 只能识别左、右、下和上。

我想在我的整个屏幕视图上添加手势。然后,每当用户在屏幕上滑动时,我想知道滑动的开始和结束坐标。滑动可以是任何角度和任何位置。有没有办法在iOS中获得滑动的开始和结束坐标

请帮我。我被严重卡住了。提前谢谢。

4

2 回答 2

4

现在我使用以下步骤完成了这个实现:-

您可以在扩展类“UIGestureRecognizer”后实现一些委托方法。

以下是方法。

// 它将给出触摸的起点

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
 CGPoint startSwipePoint= [touches.anyObject locationInView:self.view];
}

// 它将定期给出触摸点

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
 CGPoint point=[touches.anyObject locationInView:self.view];
}

//它将给出结束滑动点

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{  
    CGPoint endSwipePoint= [touches.anyObject locationInView:self.view];
}

// 这是计算两点之间角度的代码。我正在使用起点和终点。但是您可以根据您的要求使用这两点中的任何一个

CGFloat angle=atan2(startSwipePoint.y - endSwipePoint.y, endSwipePoint.x - startSwipePoint.x) * Rad2Deg;
于 2013-09-16T12:00:45.060 回答
1

好吧,一种方法是只使用 UIPanGestureRecognizer。平移手势不关心他们前进的方向,并且能够跟踪他们在视图中的位置。以下是如何获得这些分数的示例。(忽略明显的范围/存储问题)

- (void)panDetected:(UIPanGestureRecognizer *)gesture
{
    if (gesture.state == UIGestureRecognizerStateBegan) {
        CGPoint startingPoint = [gesture locationInView:gesture.view];
    }else if (gesture.state == UIGestureRecognizerStateEnded) {
        CGPoint endPoint = [gesture locationInView:gesture.view];
    }
}

但是,如果您不喜欢使用滑动手势识别器,您可以修改我在此处的链接答案中创建的一个几乎完整的对角滑动手势子类:如何制作组合手势?

这个子类允许您指定一个可以设置为 44.99 度的公差角度,这将允许几乎每个方向的滑动检测。

于 2013-08-27T11:57:21.927 回答