Поскольку selected
не является анимируемым свойством, оно не будет работать (как вы узнали). Мое решение состояло бы в том, чтобы выбранное состояние btn находилось в отдельном UIImageView непосредственно под кнопкой в том же месте. Затем в действии для нажатия на кнопку:
- (void) tapButton:(UIButton *)btn {
btn.alpha = 0;
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationDelegate:[UIApplication sharedApplication]];
[UIView setAnimationDidStopSelector:@selector(endIgnoringInteractionEvents)];
btn.alpha = 1;
[UIView commitAnimations];
}
Примечание. Я также добавил вызовы begin/endIgnoringInteractionEvents
, чтобы пользователь не мог нажать на кнопку, когда она возвращается в нормальное состояние. Если вы хотите разрешить это, замените begin/end
вызовы на [UIView setAnimationBeginsFromCurrentState];