UIAlertViewDelegate clickedButtonAtIndex: полезность? - PullRequest
12 голосов
/ 22 марта 2010

Протокол UIAlertViewDelegate определяет два метода, alertView:clickedButtonAtIndex: и alertView:didDismissWithButtonIndex:, которые мне кажутся полезными одинаковыми.

Почему существуют clickedButtonAtIndex и didDismissButtonWithIndex, когда ониоба делают одно и то же?Я понимаю, что есть также willDismissButtonWithIndex, который происходит до того, как представление оповещения будет отклонено, но есть ли причина использовать clickedButtonAtIndex вместо didDismissButtonWithIndex?

Ответы [ 4 ]

19 голосов
/ 16 апреля 2010

Я обнаружил более полезную разницу между этими двумя значениями:

При отображении UIAlertView, когда устройство переходит в спящий режим, вызывается alertView:didDismissWithButtonAtIndex:, даже несмотря на то, что представление предупреждений фактически не отклоняетсяОн снова отображается после пробуждения устройства.alertView:clickedButtonAtIndex: вызывается только тогда, когда пользователь нажимает одну из кнопок.

12 голосов
/ 22 марта 2010

alertView:clickedButtonAtIndex: вызывается, когда пользователь нажимает кнопку в представлении предупреждений, тогда как alertView:didDismissWithButtonIndex: вызывается после того, как представление оповещений исчезает с экрана. (См. Справочник по протоколу UIAlertViewDelegate .)

Разница минимальна, но она позволяет вам что-то делать до или после анимации.

1 голос
/ 28 марта 2014

Я не мог воспроизвести поведение Эда, заблокировав свое устройство с представлением предупреждений, присутствующим в iOS 7.

Однако самое важное различие между alertView:clickedButtonAtIndex:, alertView:didDismissWithButtonIndex: и alertView:willDismissWithButtonIndex: заключается в том, что первый метод (clickedButtonAtIndex:) вызывается только тогда, когда пользователь явно нажимает кнопку на вашем просмотр предупреждений (следовательно, «нажал»).

Возможно ли, что просмотр предупреждений отменяется без нажатия кнопки? Да, вы можете программно скрыть представление предупреждений, используя UIAlertView метод dismissWithClickedButtonIndex:animated:.

Таким образом, если вам нужно, чтобы какое-либо поведение всегда вызывалось при закрытии представления оповещения - независимо от того, было ли оно вызвано нажатием кнопки пользователем или программно - - тогда использование didDismissWithButtonIndex: и willDismissWithButtonIndex: имеет больше смысла .

1 голос
/ 21 ноября 2010

Если представление оповещения исчезает по какой-либо причине (включая закрытие другого UIAlertView, переход в режим сна и т. Д.), Вызывается didDismissWithButtonAtIndex:.Это может означать, что метод может быть вызван даже без нажатия пользователем чего-либо.Это может привести к неожиданному поведению, если вы зависите от этого обратного вызова делегата, который будет вызываться в ответ на фактическое нажатие пользователем кнопки.В этом случае clickedButtonAtIndex: является более полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...