Отображение маскированного BTProgressHUD без блокировки панели вкладок?
Можно ли показать BTProgressHUD с маской, не мешая взаимодействию с панелью вкладок? Другими словами, можно ли ограничить маску в BTProgressHUD только текущим показанным контроллером представления вкладки вместо полного окна?
BTProgressHUD.Show(status: "Oh hai", maskType: ProgressHUD.MaskType.Gradient);
Я пытаюсь поменять MTMBProgressHUD на BTProgressHUD (по причинам). К сожалению, когда я показываю BTProgressHUD с маской, он блокирует пользователя от выбора другой вкладки, пока она отображается (что MTMBProgressHUD не помешало). Мне определенно нужно заблокировать любой прогресс / взаимодействие в контроллере представления текущей вкладки, но я не против, если пользователь переключается на другую вкладку вместо того, чтобы ждать, пока текущая вкладка завершит любую задачу, требующую прогресса HUD.
Вот полный пример кода Gist. Это немного сложнее, так как он включает контроллер панели вкладок, и каждая вкладка должна иметь возможность контролировать свои собственные индивидуальные HUD (когда эта проблема решена).
1 ответ
После некоторого обсуждения в Twitter с создателем BTProgressHUD было установлено, что это невозможно в текущей версии v1.15. Он предлагает изменить источник, чтобы это произошло. Я смог собрать рабочую версию всего за несколько строк. (Для интеграции с BTProgressHUD.Show
методы, которые используют общий экземпляр, но мне нужны отдельные HUD для каждой вкладки.)
Если вы строите из этого разветвления, вы можете создать BTProgressHUD с родительским представлением (в отличие от окна по умолчанию), которое будет ограничивать покрытие маски наложения.
var progressHud = new ProgressHUD(View); // ctor overload requires the forked version
progressHud.Show(status: labelText, maskType: ProgressHUD.MaskType.Gradient);