根据我在H2CO3回答的问题Detecting the direction of PAN gesture in iOS中所知,您可以使用以下方法检测UIPanGestureRecognizer
中的左移或右移:
CGPoint vel = [gesture velocityInView:self.view];
if (vel.x > 0)
{
// user dragged towards the right
}
else
{
// user dragged towards the left
}
当用户点击并按住与上面代码类似的按钮时,我想检测向左或向右移动当用户输入UILongPressGestureRecognizer
状态时使用UIGestureRecognizerStateChanged
,但似乎我不能简单地使用{{ 1}}让事情在我的案例中发挥作用。
任何人都可以帮助我?
答案 0 :(得分:6)
首先将识别器的allowableMovement
设置为较大的值(默认情况下为10像素)。并使用以下代码
-(void)longPressed:(UILongPressGestureRecognizer*)g
{
if (g.state == UIGestureRecognizerStateBegan) {
_initial = [g locationInView:self.view]; // _initial is instance var of type CGPoint
}
else if (g.state == UIGestureRecognizerStateChanged)
{
CGPoint p = [g locationInView:self.view];
double dx = p.x - _initial.x;
if (dx > 0) {
NSLog(@"Finger moved to the right");
}
else {
NSLog(@"Finger moved to the left");
}
}
}
请注意UILongPressGestureRecognizer
是连续的,因此您将获得倍数UIGestureRecognizerStateChanged
。如果您只想在用户抬起手指时收到一条通知,请使用UIGestureRecognizerStateEnded
。