ios uiimageview点击手势在动画期间不起作用

Posted

技术标签:

【中文标题】ios uiimageview点击手势在动画期间不起作用【英文标题】:ios uiimageview tap gesture not working during animation 【发布时间】:2012-09-05 18:04:08 【问题描述】:

我有一个UIImageView,它是动画的并接收一个UITapGestureRecognizer。问题在于动画时,点击手势区域不会随视图移动。我可以点击视图的原始位置并且点击手势被识别。任何人都知道如何在视图移动而不是在其原始位置时识别水龙头?

编辑 1: 这就是我设置点击手势识别器的方式:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
    tapRecognizer.cancelsTouchesInView = YES;
    tapRecognizer.numberOfTapsRequired = 1;
    tapRecognizer.delegate = (id)self;
    [imageView addGestureRecognizer:tapRecognizer];
    imageView.userInteractionEnabled = YES;

由于我的动画持续了几秒钟,有没有办法让手势识别器在其路径上跟随我的视图?我错过了一个设置吗?

编辑 2: 这是我设置动画的代码:

    double width = backgroundImageView.frame.size.width;
    double height = backgroundImageView.frame.size.height;

    CGMutablePathRef path = CGPathCreateMutable();
    double startX = -imageView.frame.size.width;
    double startY = height/4;
    double endX = 3*width;
    double endY = 0;
    double duration = 40;
    CGPathMoveToPoint(path, NULL, startX, startY);
    CGPathAddLineToPoint(path, NULL, endX, endY);
    CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    animation.duration = duration;
    animation.path = path;
    animation.repeatCount = HUGE_VALF;
    [imageView.layer addAnimation:animation forKey:@"theAnimation"];

【问题讨论】:

能把动画的代码展示一下吗? 我添加了用于设置动画的代码。 我尝试通过在路径上为 UIButton 设置动画来进行测试,它执行相同的操作。如果我让动画持续 30 秒,在它移动的整个过程中,我可以点击它的原始位置,它会“好像”按钮没有动画。 【参考方案1】:

对于任何感兴趣的人,我解决了我的问题。只需使用NSTimer,通过以下方式检查并更新UIImageViewframe 演示文稿layer

CGRect viewLocation = [[[imageView layer] presentationLayer] frame];    
imageView.frame = CGRectMake(viewLocation.origin.x, viewLocation.origin.y, viewLocation.size.width, viewLocation.size.height);

之后,无论我的图像视图在哪里,触摸都可以工作:-)

【讨论】:

以上是关于ios uiimageview点击手势在动画期间不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在点击手势上为 UIImageView 设置动画?

iOS将点击手势添加到UIImageView

iOS标签可见性切换没有动画

怎么给uiimageview添加两次点击事件ios

动画后的iOS旋转手势

向 UIImageView 添加轻击手势以更改 UILabel?