4

我正在我的应用程序上打开 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 撰写屏幕,有人知道该怎么做吗?

4

2 回答 2

0

这个问题也困扰了我一整天!最后我得到了一些技巧来让 SLComposeViewController 看起来更快。似乎当我第一次加载 SLComposeVC 时,SLComposer 会在主线程中占用大量资源,但在那之后,它会毫无延迟地显得完全正常......所以我想也许我们需要加载 SLCompose在我们的视图控制器中查看(只需加载视图)和 viola.. 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];
    }
   ...
}
  • 对不起,如果我的英语不完美,我不是本地人。
于 2014-12-04T09:22:32.157 回答
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];


});
于 2014-08-25T22:13:21.733 回答