我在我的应用上打开Twitter撰写视图,但屏幕显示时间太长了!
当用户点击twitter按钮时,我开始使用以下代码:
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
SLComposeViewController *tweet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[tweet setInitialText:@"initial text "];
[self presentViewController:tweet animated:YES completion:^
{
}];
}
但显示屏幕需要5到8秒!对我来说太长了,我看到了即时的应用程序。这不是我的应用程序的问题,因为我创建了一个只有这个功能的新项目,它也是一样的。
所以我认为延迟是在屏幕实例化的那一刻,所以我决定在我的标题上声明我的推文屏幕并将此部分移动到viewDidAppear:
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
tweet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[tweet setInitialText:@"initial text "];
并且按钮方法就是这样:
if(tweet)
[self presentViewController:tweet animated:YES completion:^
{
}];
但它没有变得更快。我正在使用iPhone 4,我有一些应用程序可以非常快速地创建Twitter撰写屏幕,有人知道如何做到这一点吗?
答案 0 :(得分:0)
我有同样的问题 - 这让我发疯了。我通过主队列上的dispatch_async修复它
// Perform this on the main queue
__weak __typeof(self) weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
__strong __typeof(self) strongLocalSelf = weakSelf;
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[controller setInitialText:@"Share message"];
[controller addURL:@"http://www.someURL.com"];
[strongLocalSelf presentViewController:controller animated:NO completion:nil];
});
答案 1 :(得分:0)
这个问题一直困扰着我一整天!最后,我得到了一些技巧,使SLComposeViewController看起来更快。当我想第一次加载SLComposeVC时,SLComposer会在主线程中占用大量资源,但之后,它会显得完全正常而没有延迟......所以我想我们可能需要加载SLCompose在我们的视图控制器中查看(只需加载视图)和中提琴... SLComposerView将直接显示在视图中...
只需在appdelegate中添加此代码
即可- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ ....
//loading the view...make twitter share dialog appear with no dellay
if(NSClassFromString(@"SLComposeViewController") != nil){
SLComposeViewController *composeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[composeViewController view];
}
...
}