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.

나는 BTProgressHUD에 대한 MTMBProgressHUD을 스왑 ( reasons 때문에)을 시도하고있다. 불행히도 마스크가있는 BTProgressHUD를 표시하면 사용자가 다른 탭을 선택하는 것을 차단합니다 (MTMBProgressHUD가 막지 않은 무언가). 현재 탭의보기 컨트롤러에서 모든 진행/상호 작용을 차단해야하지만, 사용자가 진행 탭을 필요로하는 작업을 완료하기 위해 현재 탭을 기다리는 대신 다른 탭으로 전환하는 것은 상관 없습니다.

여기는 full sample code Gist입니다. 탭 막대 컨트롤러가 포함되어 있기 때문에 조금 더 복잡합니다. 각 탭은이 문제가 해결되면 자체 HUD를 제어 할 수 있어야합니다.

+0

잠시 동안 BTProgressHUD 작동하지 않았지만, 지금까지 내가 기억하는이 메인 창에 상자 전체 화면에서 살고있다. 그러나 코드가 GitHub에서 사용 가능하므로 쉽게 변경할 수 있습니다. https://github.com/nicwise/BTProgressHUD/blob/master/BTProgressHUD/ProgressHUD.cs에서 빠른 확인 : 240 및 241 행이 재미 있습니다. –

+0

그것은 BTProgressHUD 제작자가 트위터에서도 제안한 것입니다. 라인 번호를 주셔서 감사합니다. 나는 그것을 아직까지 만들지 않았다. – patridge

답변

1

BTProgressHUD 작성자와 some discussion on Twitter을 작성한 후 현재 v1.15 릴리스에서 이것이 가능하지 않다고 판단되었습니다. 그는 이런 일이 일어나도록 소스를 수정할 것을 제안합니다. 나는 working version in just a few lines을 조립할 수있었습니다. (공유 인스턴스를 사용하는 BTProgressHUD.Show 메소드와 통합하려면 여전히 작업이 필요하지만 탭마다 개별 HUD가 필요합니다.)

이 포크에서 빌드하면 부모 뷰를 가진 BTProgressHUD를 작성할 수 있습니다 창에 기본값으로 설정) 오버레이 마스크의 적용 범위를 제한합니다.

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

관련 문제