У меня возникает зависание приложения, когда пользователь нажимает кнопку «Домой»:
Фрагмент, вызывающий проблему:
[UIView animateWithDuration:0.5
delay: (float)random()/RAND_MAX * 1.0f
options: UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
animations:^{
[self setAlpha:1.0f];
}
completion:^(BOOL finished){
}];
Я полагаю, что происходит то, что случайная задержка планирует анимацию, а затем пользователь выходит из нее - так что метод, который удаляет анимацию (для нее установлено автоматическое повторение), никогда не вызывается? и приложение зависает, все еще показывая анимацию.
Это так плохо, что требуется перезагрузка iPhone. У меня раньше были похожие проблемы с блоками и анимацией, так что это был первый код, который я прокомментировал, и проблема ушла.
Я пытался вызвать [self.layer удалить все анимации] в представлении после нажатия кнопки «Домой», но это не помогает.
Мне не удалось отладить проблему, как это происходит в "no-mans-land" после вызова applicationWillEnterbackground. Инструменты не показывают ничего необычного.
Может ли кто-нибудь предложить помощь относительно того, какой подход я должен предпринять, чтобы анимация с задержками не вызывала такое поведение?
(это может быть executeSelector: withDelay за кадром):