2016-08-02 13 views
0

로컬 코어 데이터를 서버와 동기화하는 동기화 기능을 만들고 있습니다. 사용자 상호 작용을 방해하지 않으면 서 백그라운드에서 동기화를 수행하려고합니다. 응답 (성공 또는 실패 여부)을 받으면 앱은 결과를 사용자에게 알리기 위해 화면 어딘가에 메시지를 표시해야합니다.iOS - 사용자 상호 작용을 방해하지 않고 화면에 SVProgressHUD 메시지 표시

UIAlertController은 사용자 행동을 차단할 수 있기 때문에 좋은 선택이 아닙니다. 현재

내가 SVProgressHUD을 사용하고 있습니다 :

__weak StampCollectiblesMainViewController *weakSelf = self; 
if ([[AppDelegate sharedAppDelegate] hasInternetConnectionWarnIfNoConnection:YES]) { 
    [_activityIndicator startAnimating]; 
    [Stamp API_getStampsOnCompletion:^(BOOL success, NSError *error) { 
     if (error) { 
      [_activityIndicator stopAnimating]; 
      [SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeClear]; 
      [SVProgressHUD setAnimationDuration:0.5]; 
      [SVProgressHUD showErrorWithStatus:@"error syncronize with server"]; 
     } 
     else { 
      [_activityIndicator stopAnimating]; 
      [featuredImageView setImageWithURL:[NSURL URLWithString:[Stamp featuredStamp].coverImage] usingActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
      [yearDropDownList setValues:[Stamp yearsDropDownValues]]; 
      [yearDropDownList selectRow:0 animated:NO]; 
      [weakSelf yearDropDownListSelected]; 
      [SVProgressHUD dismiss]; 
     } 
    }]; 
} 

내가 그렇게 사용자가 여전히 응용 프로그램과 상호 작용할 수 있도록 할 수있는 수정이 있습니까? 난 그냥 너무 많은 공간을 차지하지 않고 메시지를 보여주고 싶다. 어떤 도움이라도 대단히 감사합니다. 감사.

답변

2

가장 쉬운 방법은 SVProgressHUDMaskTypeNone을 사용하는 것입니다.

this issue도 확인하십시오.

+0

좋은 해결책! 나는 지금 SVProgressHUD를 고수 할 것이다. SVProgressHUD를 배치하는 방법을 아십니까? (보기를 중앙에서 차단하지 않고 위 또는 아래처럼)? –

+0

http://stackoverflow.com/questions/26728060/position-mbprogresshud-at-the-bottom-top-of-the-screen –

0

미안하지만 사용자 정의보기를 직접 만들어야합니다. 실제로 그렇게 어렵지는 않습니다. 내가 할 일은 사용자 정의 메시지와 닫기 버튼을 사용하여 화면 상단에 작은보기를 추가하는 것입니다 (사용자가 메시지를 빠르게 숨길 수 있음). 일반적으로이 새보기를 현재 창에 추가하여 모든보기의 맨 위에 있고 UI를 차단하지 않습니다 (해당보기에 의해 숨겨진 부분 제외).