在播放 UIAnimation 时执行 UIPanGestureRecognizer

Posted

技术标签:

【中文标题】在播放 UIAnimation 时执行 UIPanGestureRecognizer【英文标题】:do UIPanGestureRecognizer while playing UIAnimation 【发布时间】:2013-04-10 06:14:38 【问题描述】:

我在平移对象后设置动画效果

-(void)panView:(UIPanGestureRecognizer*)recognizer
    //do sth...

    if(recogizer.state==UIGestureRecognizerStateEnded)
        [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseOut animation^
            //do sth2...
        completion:^(BOOL finished)
            //do sth3...
        ];
    


问题是在播放动画时,我再次平移该对象。 新的平移没有发生,我应该等到动画完成才能再次平移。

如何中断动画突然进行新的平移???

解决方案

将 UIViewAnimationOptionAllowUserInteraction 添加到选项。 并且可以在重做平移之前设置 self.layer removeAllAnimations。

【问题讨论】:

【参考方案1】:

试试下面的代码

-(void)panView:(UIPanGestureRecognizer*)recognizer


    //do sth...

    [animatingView.layer removeAllAnimations];

    if(recogizer.state==UIGestureRecognizerStateEnded)
    
        [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction animation^

            //do sth2...

        completion:^(BOOL finished)

            //do sth3...

        ];
    


【讨论】:

以上是关于在播放 UIAnimation 时执行 UIPanGestureRecognizer的主要内容,如果未能解决你的问题,请参考以下文章

使用随机坐标重复 UIAnimation

为 UIImageview 设置 Uianimation 和 Touch 事件

试图从 UIButton 后面滑出一个新的 UIView 是 UIAnimation

csharp UIAnimation

在 AVPlayerViewController 中点击播放按钮时执行操作

单击网页上的链接时在服务器上执行音频播放器