【问题标题】:Disabling a UIButton in middle of animation在动画中间禁用 UIButton
【发布时间】:2012-07-17 09:26:34
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以让动画在动画期间禁用所有用户交互。然后它会在动画结束后自动启用它。这对你有用吗?
  • 是的,这行得通!我该怎么做?
  • 当使用基于块的动画方法时,默认禁用所有用户交互,请参阅link
  • 我使用了动画块:'[UIView animateWithDuration:3.2 delay:0.0f options:UIViewAnimationCurveLinear animations:^{imageview.animationImages = images;} completion:]; [imageview 开始动画]; [self.view addSubview:imageview]' 但首先动画会永远持续下去,并且仍然存在用户交互。有错吗?
  • 你得到答案了吗?让我们也知道,伙计

标签: objective-c xcode cocoa-touch uibutton


【解决方案1】:

我认为动画完成块是您正在寻找的,

[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

【讨论】:

    【解决方案2】:

    解决这种情况的最好方法是实现一个带有完成块的UIAnimation。 看看这个post SO。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      你可以使用

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

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

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2015-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多