UIPanGestureRecognizer有一点问题.
识别器不报告UIGestureRecognizerStateEnded
状态如果用户平移到左上角(意味着负x和y
方向)
识别器不报告UIGestureRecognizerStateEnded
状态如果用户平移到左上角(意味着负x和y
方向)
UIGestureRecognizerStateEnded状态改变如果有任何方向
当用户抬起手指时,它是积极的,但它只是停止报告
如果两个方向为负或零,则动作.
这是坏的,因为我隐藏一些覆盖视图只要用户
拖曳某些东西,这些意见不会在失败的情况下返回.
当然,我可以设置一个NSTimer来显示一些覆盖
时间自动再次,但我可以看到我的代码没有明显的错误
我想要干净
有没有我错过的东西?是苹果的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 }
解决方法
线
[self addGestureRecognizer:pan];
看起来我错了
看起来你正在从UIView内部创建手势识别器,而不是UIViewController.所以如果视图是dealloc,它和手势识别器就会消失.
更好地从UIViewController创建手势识别器.此外,UIViewController需要保持对识别器的强烈要求.