Reputation: 461
Big edit: I'm a complete begginer to Obj-C and iOS development.
When my UIButton is pressed, a label with fade in. This label takes 3 seconds to do fade in. How would I go about disabling the UIButton for those 3 seconds?
This is what I was trying:
[UIView animateWithDuration:3.0f animations:^{
self.button.enabled = NO;
self.quoteLabel.alpha = 1.0f;
self.quoteLabel.text = self.quotes.randomQuote;
self.labelForNumberOfTimesRead.text = [NSString stringWithFormat:@"+ %d",numberOfTimesRead ];
}];
self.button.enabled = YES;
But it only disables for an 'instant'.
Upvotes: 0
Views: 1147
Reputation: 104082
You can do it simply like this,
self.button.enabled = NO;
self.quoteLabel.text = self.quotes.randomQuote;
self.labelForNumberOfTimesRead.text = [NSString stringWithFormat:@"+ %d",numberOfTimesRead ];
[UIView animateWithDuration:3 animations:^{
self.quoteLabel.alpha = 1.0f;
} completion:^(BOOL finished) {
self.button.enabled = YES;
}
];
It's not clear what you're doing with labelForNumberOfTimesRead. Do you want that one to fade in (or out) as well?
Upvotes: 2
Reputation: 10938
// Start by disabling the button
self.button.enabled = NO;
// This method will **queue** an animation but it won't start right away
[UIView animateWithDuration:3.0f animations:^{
// Next animate anything you want
self.quoteLabel.alpha = 1.0f;
self.quoteLabel.text = self.quotes.randomQuote;
self.labelForNumberOfTimesRead.text = [NSString stringWithFormat:@"+ %d",numberOfTimesRead ];
}
// Use completion block to re-enable button
completion:^(BOOL finished){
self.button.enabled = YES;
}
];
// The following line is commented as it would be executed before the animation block!
// self.button.enabled = YES;
Upvotes: 0
Reputation: 7333
I think you should have put some code so we could help you better. For now I am adding psudocode .You can use NSTimer here .
add [yourButton setEnable : NO]
on the click of your button .
And when your animation completes then add [yourButton setEnable : YES]
.
If you face any difficulty for getting the animation complete event then you can use the NSTimer also.
Upvotes: 1