2015-05-08 7 views
3

SLComposeViewController занимает 3-4 секунды после его представления. Но presentViewController:(UIViewController *) animated:(BOOL) completion:^(void)completion метод завершения блока вызывает сразу. Поэтому, даже если я использую индикатор загрузки, он мгновенно исчезает. Соответствующий код приведен ниже. Btw Я пробовал dispatch_async это не сработало.SLComposeViewController появляется медленно

Как ускорить процесс, есть ли у вас какие-либо идеи?

SLComposeViewController *shareView = [SLComposeViewController composeViewControllerForServiceType: SLServiceTypeFacebook]; 
[shareView setTitle:@"Title"]; 
[shareView setInitialText:@"Description"]; 
[shareView addURL:[NSURL URLWithString:@"http://www.google.com/"]]; 
[shareView setCompletionHandler:^(SLComposeViewControllerResult result) { 

    switch (result) { 
     case SLComposeViewControllerResultCancelled: 
     { 
      NSLog(@"Facebook Post Canceled"); 
      break; 
     } 
     case SLComposeViewControllerResultDone: 
     { 
      NSLog(@"Facebook Post Successful"); 
      break; 
     } 
     default: 
      break; 
    } 
}]; 

UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
activityView.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2.0, [UIScreen mainScreen].bounds.size.height/2.0); 
[activityView startAnimating]; 
[self.view addSubview:activityView]; 

[self presentViewController:shareView animated:YES completion:^{ 
    NSLog(@"Presented facebook"); 
    [activityView removeFromSuperview]; 
}]; 
+0

вы проверили этот http://stackoverflow.com/questions/13519904/how-to-make-the-presentviewcontroller-with-slcomposeviewcontroller-faster – Vizllx

+0

Да я проверил это. Я опубликовал новый вопрос, потому что я хочу спросить также, почему заканчиваются блоки завершения, но представление не отображается так быстро, как есть. – mkeremkeskin

+0

Вы нашли рабочее решение? – BoilingLime

ответ

0

Таким образом, это не исправление, но это может помочь вам. Я не мог заставить вещи появляться быстрее, я думаю, что это просто реализация, втягивающая данные перед отображением.

Так как завершение текущегоViewController выполняется почти мгновенно, моим обходным путем было отобразить представление прогресса и установить селектор для выполнения через 2 секунды. Вот, например, селектор просто скрывает представление прогресса.

[MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
[self performSelector:@selector(hideProgressView) withObject:nil afterDelay:2.0f]; 

[self presentViewController:self.composeViewController animated:YES completion:nil]; 


- (void)hideProgressView 
{ 
    [MBProgressHUD hideHUDForView:self.view animated:YES]; 
}