显示某个图像时,禁用iOS中的按钮

时间:2013-09-17 22:45:58

标签: ios objective-c animation

我有一个animationImages动画,我的UIImage * imageView在动画的最后一帧结束。

当显示动画的最后一个图像时,我想禁用启动动画的按钮(buttonOne),并在按下另一个按钮(buttonTwo)时重置动画。 ButtonTwo显示动画的第一个图像,因此它不显示最后一个图像。所以基本上,我正试图想办法让用户重置动画。

我的问题:如何在显示最后一张图像时禁用buttonOne,并在显示第一张图像时再次启用buttonOne?

这是我的第一次尝试:

- (IBAction)buttonOne:(UIButton *)sender {
if (self.imageView.image == [self.imageView.animationImages lastObject]) {[self.buttonOne     setEnabled:NO];}
else {[self.buttonOne setEnabled:YES];}

到目前为止,该按钮仍处于禁用状态。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您无法将代码设置为启用按钮操作方法中的按钮,因为此时将禁用该按钮。我不认为有任何方法可以在动画完成时收回回调,但由于您设置了动画持续时间,因此您可以调用一种方法在相同的时间段后禁用该按钮。像这样:

-(IBAction)animatePcs:(id)sender {
    self.iv.animationImages = self.pics;
    self.iv.animationDuration = 2.0;
    self.iv.animationRepeatCount = 1;
    [self.iv startAnimating];
    [self performSelector:@selector(disableButton) withObject:nil afterDelay:2.0];
}

-(void)disableButton {
    self.button1.enabled = NO;
    [self.button1 setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
}

-(IBAction)reenableButton1:(id)sender { // button 2 method
    self.button1.enabled = YES;
    [self.button1 setTitleColor:self.buttonTextColor forState:UIControlStateNormal];
}

我使用[self.button1 titleColorForState:UIControlStateNormal]在viewDidLoad中设置了buttonTextColor的值。

答案 1 :(得分:0)

- (void) startanimation {

  [buttonOne.userInteractionEnabled = NO];
    [UIView animateWithDuration:5. delay:0. options:UIViewAnimationOptionCurveEaseInOut animations:^{
        // do your animation here
    } completion:^(BOOL finished) {
         // When your animation finished, allow users to interact with the button
        [buttonOne.userInteractionEnabled = YES];
    }];

}