【发布时间】:2011-05-26 14:04:35
【问题描述】:
我在使用 UIPanGestureRecognizer 时遇到了一点问题。 识别器不报告 UIGestureRecognizerStateEnded 用户是否平移到左上角的状态(表示负 x 和 y 方向)
如果有任何方向,状态将更改为 UIGestureRecognizerStateEnded 当用户抬起手指时是肯定的,但它只是停止报告 如果两个方向都是负数或零,则采取行动。
这很糟糕,因为我隐藏了一些覆盖视图,只要用户 拖动一些东西,这些视图在失败的情况下不会返回。
当然我可以设置一个 NSTimer 来显示覆盖 再次自动计时,但我在我的代码中看不到明显的错误,并且 我要干净。
我错过了什么吗?是不是 Apple Bug?
初始化是这样的:
pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)];
[self addGestureRecognizer:pan];
[pan release];
处理函数如下所示:
- (void)panRecognized:(UIPanGestureRecognizer *)gestureRecognizer {
switch ([gestureRecognizer state]) {
case UIGestureRecognizerStateBegan:
// fade some overlaying views out
break;
case UIGestureRecognizerStateEnded:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
// fade in the overlays
break;
default:
break;
}
// handle panning
}
【问题讨论】:
-
过去,当我不小心将手势识别器移除/移动到不同的视图时,这发生在我身上。只要你这样做,它就会安静下来。你的情况不是这样吗?
-
不确定到底发生了什么,但尝试通过考虑所有可能的 UIGestureRecognizerStates 来记录状态更改,以查看交互过程中发生了什么
-
也发生在我身上。将
uiview.addGestureRecognizer从我的 VC 的viewDidLayoutSubviews转移到viewWillAppear解决了这个问题,仍在寻找理由。
标签: ios ipad uigesturerecognizer gesture-recognition pan