Ответ 1
Короткая задержка является нормальной для Alert View (менее секунды). Если это не удобно для вас, вы можете программно создать представление, которое покрывает экран ярлыком и кнопкой, в основном настраиваемый вид предупреждения.
Я пытаюсь изменить UIAlertViews на UIAlertControllers. Я установил для него это действие:
UIAlertAction *undoStopAction = [UIAlertAction actionWithTitle:@"Undo Stop"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
[self undoStop];
}];
Но обработчик не запускается примерно через секунду после нажатия на действие. Есть ли способ ускорить это?
Короткая задержка является нормальной для Alert View (менее секунды). Если это не удобно для вас, вы можете программно создать представление, которое покрывает экран ярлыком и кнопкой, в основном настраиваемый вид предупреждения.
Как подразумевается комментарий, оставленный г-ном Т, возможно, что обработчик не вызывается в основном потоке, что может объяснить задержку. Попробуйте внедрить код вашего обработчика в:
dispatch_async(dispatch_get_main_queue()) {
<your code>
}
и посмотрите, все ли вы получаете задержку.
Здесь есть полу-решение:
Обработчик UIAlertAction немного запоздал - как я могу сделать это немедленно?
В основном, подкласс контроллера предупреждений и запуск обработчика на viewWillDisappear. Вы можете сохранить блок обработчика на контроллере предупреждения.
Проблема с этим решением заключается в том, что вы не можете запускать обработчик на кнопку, как вы можете, если вы добавите действие с помощью UIAlertAction. Так что главное ограничение.
Однако это решение сработало для меня (потому что я пытался добавить фоновое представление позади предупреждения, когда появилось предупреждение и заставило его оживить предупреждение, когда предупреждение исчезло... первоначально я попытался сделать это с помощью нажатие кнопки, но это не сработало из-за задержки обработчика).