2011-03-27 2 views
1

iPhone 응용 프로그램에서 검정색 둥근 모서리 "로드 중"유형 오버레이를 표시하기 위해 MBProgressHUD와 DSActivityView를 보았습니다.MBProgressHUD 또는 DSActivityView - 취소하려면 누르십시오

나는 오버레이 탭을 감지하기 위해이 중 하나를 확장하는 방법을 알고 있기 때문에 작업을 취소 할 수 있는지 궁금합니다.

"로딩"표시기가있는 앱을 적어도 하나 이상 보았습니다. 그러나 텍스트 "취소하려면 누르십시오."

감사합니다.

답변

1

이 작업을 수행하는 가장 쉬운 방법은 (MBProgressHUDUIView의 서브 클래스이기 때문에,이, 클래스 자체가 될 수 MBProgressHUD의 경우) 해당보기로 (하나의 탭에 대한) 제스처 인식기를 추가하는 것입니다. 탭을 감지하면 해제 방법 ([MBProgress HUD hide])을 트리거 할 수 있습니다.

로딩 뷰 자체를 제거하는 것 외에도 수행중인 작업을 취소하고 정리하기를 원하기 때문에 앱에 대한 NSNotification을 트리거해야 할 수도 있습니다 로드 중.

25
- (void)showHUDWithCancel:(NSString *)aMessage { 
    self.HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    self.HUD.labelText = aMessage; 
    self.HUD.detailsLabelText = @"Tap to cancel"; 
    [self.HUD addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hudWasCancelled)]]; 
} 

- (void)hudWasCancelled { 
    [self.HUD hide:YES]; 
} 
+1

Doubleplusgood. – Nestor

+0

나는 취소 할 때 탭핑 할 때 예외를 던졌습니다. "인식 할 수없는 셀렉터가 인스턴스로 전송되었습니다."꽤 목표에 hudWasCancelled를 설정했습니다. – Bruce

+0

Nvm은 hudWasCancelled에 대한 누락 된 (id) 송신자 매개 변수 때문에 발생했습니다. – Bruce