ios – 如果用户将x和y置于负方向,UIPanGestureRecognizer不会切换到状态“End”或“Cancel”

前端之家收集整理的这篇文章主要介绍了ios – 如果用户将x和y置于负方向,UIPanGestureRecognizer不会切换到状态“End”或“Cancel”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
UIPanGestureRecognizer有一点问题.
识别器不报告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需要保持对识别器的强烈要求.

猜你在找的iOS相关文章