微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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需要保持对识别器的强烈要求.

原文地址:https://www.jb51.cc/iOS/335087.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐