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 に答える