Dun*_*ern 13 gesture-recognition pan ipad uigesturerecognizer ios
我对UIPanGestureRecognizer有一点问题.如果用户平移到左上角(表示负x和y方向),则识别器不会报告UIGestureRecognizerStateEnded状态
如果用户抬起手指时任何方向为正,则状态更改为UIGestureRecognizerStateEnded,但如果两个方向均为负或零,则仅停止报告操作.
这很糟糕,因为我隐藏了一些叠加视图,只要用户拖动某些内容并且这些视图在失败的情况下不会返回.
当然我可以设置一个NSTimer来重新显示一段时间后再次显示覆盖,但我可以看到我的代码中没有明显的错误,我希望它干净.
我错过了什么吗?它是Apple Bug吗?
初始化是这样的:
pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)];
[self addGestureRecognizer:pan];
[pan release];
Run Code Online (Sandbox Code Playgroud)
处理函数如下所示:
- (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
}
Run Code Online (Sandbox Code Playgroud)
线路
[自我添加GestureRecognizer:pan];
我觉得不对。
看起来您正在从 UIView 而不是UIViewController. 因此,如果视图被解除分配,它和手势识别器都将消失。
最好从UIViewController. 还UIViewController需要对识别器保持强项。