Метод делегата UIAlertView alertViewCancel: не вызывается - PullRequest
2 голосов
/ 17 января 2012

Протокол UIAlertViewDelegate гласит следующее:

// Called when we cancel a view (eg. the user clicks the Home button). This is not called when the user clicks the cancel button. 
// If not defined in the delegate, we simulate a click in the cancel button 
- (void)alertViewCancel:(UIAlertView *)alertView; 

Однако у меня отображается UIAlertView, и когда я сейчас нажимаю кнопку «Домой» в симуляторе, метод alertViewCancel: делаетне звонить.Обратите внимание, что метод делегата alertView:clickedButtonAtIndex: вызывается, когда я касаюсь кнопки в AlertView, чтобы делегат был правильно подключен.

Это ошибка на стороне Apple, или это я, или, возможно, симулятор?

Редактировать:

В настоящее время я работаю над этой проблемой, прослушивая уведомление UIApplicationWillResignActiveNotification, в котором я делаю следующее, чтобы закрыть AlertView:

[self.currentAlert dismissWithClickedButtonIndex:-1 animated:NO];
[self.currentAlert release];
self.currentAlert = nil;

1 Ответ

3 голосов
/ 17 января 2012

Вызывается, когда система на самом деле отменяет ваш просмотр предупреждений. Ваше представление предупреждений больше не отменяется, когда ваше приложение переходит в фоновый режим, поскольку, если ваше приложение не будет удалено процессом flotsam, когда вы снова станете на передний план, ваше представление предупреждений снова появится. Я предполагаю, хотя я не знаю наверняка, что, если flotsam убьет ваш процесс, вы получите этот вызов делегата как часть последовательности демонтажа.

Документация, вероятно, немного вводит в заблуждение по этому вопросу. Раньше было так, что кнопка домой нажимает отмененные оповещения, но это уже не всегда так.

...