2014-11-11 4 views
0

에서 주 스레드에서 다운로드됩니다비활성화 UI 상호 작용 I 데이터까지 아이 패드의 UI 상호 작용을 비활성화 할</p> <p>내가 로딩 시간에 이미지를 다운로드하는거야을 블록을 사용하여 백엔드에서 주 스레드에서 다운로드하는 백엔드

-(void)downLoadImageData{ 
[self ShowActivityIndicator]; 

[iOSNetwork getImages:ImageID andEvent:eventID 
       onCompletion:^(NSString* result,NSError* error) 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
    if(error) 
    { 
     [self stopFetch:@"Error while Processing"]; 
    } 
    else 
    { 
     [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 
     [self stopFetch:result]; 

    } 
    }); 
}]; 
} 

-(void) stopFetch:(NSString*) result{ 

    [self hideActivityIndicator]; 
    //after downloading completed 
    [[UIApplication sharedApplication] endIgnoringInteractionEvents]; 
} 
+0

에 완료

self.navigationController.navigationBar.userInteractionEnabled=YES; // perform other events also userInteractionEnabled=NO; 

후 완료

[self.view setUserInteractionEnabled:YES]; 

한 번 더 선택

self.navigationController.navigationBar.userInteractionEnabled=NO; // perform other events also userInteractionEnabled=NO; 

는, 사용자에 가지 뒤로 또는 다른 ... –

+0

사용자는 돌아가거나 로그인, 재생 등의 버튼 동작과 같은 일부 동작을 수행하면 안됩니다. – soumya

+0

* 일부 코드를 표시해야합니다 - 시도한 것은 무엇입니까? 본질적으로 로딩이 끝날 때까지 UI 컨트롤을'enabled = NO'로 설정하면됩니다. – Paulw11

답변

1

사용 전체 응용 프로그램 호출

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 

경우 후

[[UIApplication sharedApplication] endIgnoringInteractionEvents]; 

완료 또 다른 선택

[self.view setUserInteractionEnabled:NO]; 

을 다운로드 한 후 다운로드 시간에 질문

-(void)downLoadImageData{ 
[self ShowActivityIndicator]; 


[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; // call here 
[iOSNetwork getImages:ImageID andEvent:eventID 
       onCompletion:^(NSString* result,NSError* error) 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
    if(error) 
    { 
     [self stopFetch:@"Error while Processing"]; 
    } 
    else 
    { 

     [self stopFetch:result]; 

     // not here 

    } 
    }); 
}]; 
} 
+0

즐거운 하루 되십시오 내 친구 –

+0

코드 karthik에서 수정. – soumya

+0

감사합니다 엄마, 행복한 하루 엄마가 –

1

이에 대한 MBProgressHud를 사용할 수 있습니다. MBProgressHUD 파일을 프로젝트에 추가해야합니다.

 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
     self.HUD = [[MBProgressHUD alloc] initWithWindow:appDelegate.window]; 
     [appDelegate.window addSubview:self.HUD]; 

     - (void)showHUDWithText:(NSString *)labelText{ 
      if (_isHUDAlreadyInProgress) { 
       return; 
      } 
      _isHUDAlreadyInProgress = TRUE; 
      [_HUD.superview bringSubviewToFront:_HUD]; 
      self.HUD.labelFont = [UIFont systemFontOfSize:13.0]; 
      //self.HUD.labelText = labelText; 
      [self.HUD show:TRUE]; 
      } 
- (void)hideHUD{ 
    _isHUDAlreadyInProgress = FALSE; 
    [self.HUD hide:TRUE]; 
} 
+0

고맙습니다. 도움이 ... – soumya

+0

[MBProgressHud] (http://www.iossdktutorials.com/ios-sdk-uiactivityindicatorview-and-mbprogresshud/)에 대한 자습서를 사용할 수 있습니다 – Vipul