SLComposeViewController显示缓慢

呈现后, SLComposeViewController需要3-4秒才能出现。 但是presentViewController:(UIViewController *) animated:(BOOL) completion:^(void)completion方法完成块被立即调用。 所以即使我使用加载指示灯,它也会在瞬间消失。 相关的代码如下。 顺便说一句我尝试dispatch_async它没有工作。

我如何加快这个过程你有什么想法?

 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]; }]; 

所以,这不是一个解决办法,但它可能会帮助你。 我不能让事情看起来更快,我认为它只是在显示数据之前拉动数据。

由于presentViewController完成几乎立即执行,我的解决方法是显示一个进度视图,并设置一个select器2秒后执行。 select器只是隐藏进度视图,这里是一个例子。

 [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]; }