1

が入っUIViewControllerUITableViewいます。UIViewその上にサブビューとしてを追加します。UIButtonサブビューのsの1つを押すと、顕著な遅延があります。どうすれば速くできますか?

ビデオを見る:http ://www.youtube.com/watch?v = KWy6NrZUeqA&feature = youtu.be

- (IBAction)tweetThat:(id)sender {
    [MBProgressHUD showHUDAddedTo:self.socialMediaView animated:YES];

    dispatch_queue_t queueOne=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_sync(queueOne, ^{
        NSString *tweetBody=@"BLABLABLATweet";

        if ([TWTweetComposeViewController canSendTweet])
        {
            TWTweetComposeViewController *tweetSheet = 
            [[TWTweetComposeViewController alloc] init];
            [tweetSheet setInitialText:tweetBody];
            dispatch_async(dispatch_get_main_queue(), ^{
                [MBProgressHUD hideHUDForView:self.controllerView animated:YES];
                [self presentModalViewController:tweetSheet animated:YES];
            });
        }
        });
}
4

3 に答える 3

1

上記で試したディスパッチ方法を使用しましたが、いくつか変更があります。それは本当に経験をずっと良くしました。「loadingView」は名前のとおり、ツイートビューが表示される前に表示されるロードビューです。

    loadingView.hidden = NO;
    [loadingView setNeedsDisplay];
    if ([TWTweetComposeViewController canSendTweet])
    {
        double delayInSeconds = 0.5;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
            TWTweetComposeViewController *tweet = [[TWTweetComposeViewController alloc]init];
            [tweet setInitialText:@"I'm using a new app called TickTalk to help my speaking cadence. Check it out!"];
            [tweet addURL:[NSURL URLWithString:@"http://www.ticktalkapp.com"]];
            TWTweetComposeViewControllerCompletionHandler
            completionHandler =
            ^(TWTweetComposeViewControllerResult result) {
                switch (result)
                {
                    case TWTweetComposeViewControllerResultCancelled:
                        NSLog(@"Twitter Result: canceled");
                        break;
                    case TWTweetComposeViewControllerResultDone:
                        NSLog(@"Twitter Result: sent");
                        break;
                    default:
                        NSLog(@"Twitter Result: default");
                        break;
                }
                loadingView.hidden = YES;
                [self dismissModalViewControllerAnimated:YES];
            };
            [tweet setCompletionHandler:completionHandler];
            [self presentModalViewController:tweet animated:YES];
        });
    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Sorry" message:@"Your device is not setup to tweet" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        loadingView.hidden = YES;
    }
于 2012-08-23T01:21:39.870 に答える
0

ラグはからTWTweetComposeViewControllerです。システムが最適化されているため、これについてできることは何もありません。2回目と3回目にボタンを押すと、ボタンが遅れていることに気付くでしょう。

于 2012-08-07T15:58:28.897 に答える
0

dispatch_syncをdispatch_asyncに変更します。UIが戻るまでロックする場合、バックグラウンドにディスパッチするポイントは何ですか。

于 2012-08-23T01:24:38.433 に答える