Есть ли способ предотвратить закрытие UIActionSheet, когда пользователь нажимает кнопку в нем?

Я добавил UIProgressView к UIActionSheet, чтобы указать ход загрузки. Поэтому я не хочу, чтобы мой UIActionSheet закрывался, когда пользователь нажимал в нем кнопку скачать.

Но есть ли способ сделать это?

Прямо сейчас я реализую метод делегата didDismissWithButtonIndex, чтобы снова показать UIActionSheet после того, как он был отклонен. Но я надеялся, что есть лучший способ.


person Qiulang    schedule 26.12.2011    source источник
comment
не могли бы вы опубликовать какой-нибудь код действия, просмотреть или скрыть лист?   -  person Hiren    schedule 26.12.2011
comment
пожалуйста, опубликуйте свой код, чтобы мы могли знать, что вы реализовали   -  person Leena    schedule 26.12.2011


Ответы (2)


UIActionSheet — это модальное представление, что означает, что оно полностью блокирует пользовательский интерфейс. Поскольку блокирование пользовательского интерфейса считается плохой практикой, предотвращение закрытия листа действий не поддерживается. Вместо этого вы должны сделать полностью отдельный индикатор прогресса за пределами листа действий.

person Costique    schedule 26.12.2011
comment
Нет, я не блокировал его полностью. У него все еще есть кнопка отмены, как и должно быть в UIActionSheet. И пользователь может закрыть UIActionSheet, нажав кнопку отмены. Я просто не хотел, чтобы он закрывался, когда пользователь нажимал кнопку загрузки. - person Qiulang; 26.12.2011
comment
iOS 8 больше не позволит вам этого делать. И, к слову, вы должны сделать совершенно отдельный индикатор прогресса за пределами листа действий. был прав с самого начала. Спасибо! - person Qiulang; 30.09.2014

@Yar, спасибо за ответ, я попробую ваше решение в другой раз.

Но я также доволен своим текущим решением. UIActionSheet.h сказал

// Called when a button is clicked. **The view will be automatically dismissed after this call returns**
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex;

Поэтому я думаю, что нажатие любой кнопки всегда будет закрывать лист действий. Тогда мое решение - сначала скрыть индикатор выполнения; когда пользователь нажимает кнопку загрузки, снова показывает лист действий, но скрывает кнопку загрузки и показывает индикатор выполнения.

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

person Qiulang    schedule 28.12.2011