UIPanGestureRecognizer 有点问题。如果用户平移到左上角,识别器不会报告 UIGestureRecognizerStateEnded 状态(表示负 x 和 y 方向)
如果用户抬起手指时任何方向为正,则状态将更改为 UIGestureRecognizerStateEnded,但如果两个方向均为负或为零,它就会停止报告操作。
这很糟糕,因为只要用户拖动某些东西并且这些视图在失败情况下不会返回,我就会隐藏一些覆盖视图。
当然,我可以设置一个 NSTimer 以在一段时间后再次自动显示覆盖,但我的代码中看不到明显的错误,我希望它干净。
有什么我想念的吗?它是苹果的错误吗?
初始化是这样的:
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
}