2012-07-17 50 views
0

好吧说我有一个圆形的矩形按钮和一个连接到它的动作方法-(IBAction)btnclicked:(id)sender。当按下按钮时,它会触发动画。我在上面提到的动作方法中使用了这个 - imageview.animationImages = images;。这里imageview是一个指向UIImageView对象的指针,images是一个图像数组。现在我想要的是该按钮应该保持禁用,而动画正在进行。为此,我试过这个:在动画中间禁用UIButton

if (imageview) { 
    btn.enabled = NO; 
} 

这当然会禁用按钮,但是我应该如何在动画结束后启用它。我想过使用NSTimer,并禁用与动画相同的时间按钮,但这不是一个好方法(它很难将此计时器与动画同步)。此外,动画结束后,动画也会停止。所以请告诉我是否有任何好方法可以做我想要做的事情?谢谢

+0

你可以有动画禁用_all_用户交互在动画期间。然后它会在动画之后自动启用它。这对你有用吗? – 2012-07-17 09:34:05

+0

是的,这将工作!我怎么做? – 2012-07-17 09:48:02

+0

使用基于块的动画方法时,默认情况下禁用所有用户交互。请参阅[link](http://stackoverflow.com/questions/5748337/preventing-user-input-during-uiview-animations)。 – werner 2012-07-17 10:00:23

回答

0

我觉得动画完成块是你在找什么,

[UIView animateWithDuration:0.5 
          delay:0.1 
         options: UIViewAnimationOptionCurveEaseOut 
        animations:^ 
    { 
     // Your animation 
    } 
        completion:^(BOOL finished) 
    { 
     //Here do whatever you like after animation ends 
    }]; 

参考: - https://stackoverflow.com/a/14900987/3411787

0

解决此类情况的最佳方法是使用完成块实施UIAnimation。 查看SO上的post

希望这会有所帮助。

0

可以使用

if (!imageview.isAnimating) { 
    btn.enabled = Yes; 
} 

这个属性成为No动画时完成。所以这意味着动画后btn变为启用。 只有你需要disable它在动画开始。

我希望这能帮助