2015-02-05 3 views
1

Возможно ли показать BTProgressHUD с маской, не препятствуя взаимодействию с панелью вкладок? Другими словами, может ли маска на BTProgressHUD ограничиваться только отображаемым в данный момент контроллером представлений на вкладке вместо полного окна?Отображение маскированного BTProgressHUD без блокировки панели вкладок?

BTProgressHUD.Show(status: "Oh hai", maskType: ProgressHUD.MaskType.Gradient); 

BTProgressHUD mask blocks the ability to switch tabs.

Я пытаюсь поменять MTMBProgressHUD для BTProgressHUD (потому что reasons). К сожалению, когда я показываю BTProgressHUD с маской, он заблокирует пользователя от выбора другой вкладки, пока она отображается (что-то не мешало MTMBProgressHUD). Мне определенно нужно блокировать любую прогрессию/взаимодействие в контроллере представления текущей вкладки, но я не против, если пользователь переключится на другую вкладку, а не ждет, пока текущая вкладка завершит выполнение любой задачи, требующей прогресса HUD.

Адрес full sample code Gist. Это немного сложнее, так как он включает в себя контроллер панели вкладок, и каждая вкладка должна иметь возможность контролировать свои собственные отдельные HUD (когда эта проблема разрешена).

+0

Не работал с BTProgressHUD на некоторое время, но, насколько я помню, он живет из коробки в полноэкранном режиме на главном окне. Но поскольку код доступен в GitHub, вы можете легко его изменить. Быстрая проверка на https://github.com/nicwise/BTProgressHUD/blob/master/BTProgressHUD/ProgressHUD.cs: строки 240 и 241 выглядят интересными. –

+0

Это то, что создатель BTProgressHUD также предлагал в Twitter. Спасибо за номера строк. Я еще не сделал этого. – patridge

ответ

1

После some discussion on Twitter с создателем BTProgressHUD было установлено, что это невозможно в текущей версии v1.15. Он предлагает изменить источник, чтобы это произошло. Я смог собрать a working version in just a few lines. (Для интеграции с методами BTProgressHUD.Show необходимо использовать общий экземпляр, но мне нужны дискретные HUD на вкладки.)

Если вы построите из этой вилки, вы можете создать BTProgressHUD с родительским представлением (vs по умолчанию для окна), что ограничит охват маски перекрытия.

var progressHud = new ProgressHUD(View); // ctor overload requires the forked version 
progressHud.Show(status: labelText, maskType: ProgressHUD.MaskType.Gradient); 

Animated GIF showing tab switching while a HUD is shown

Смежные вопросы