Щебетать Опубликовать iOS6 "Отменить"

Я в процессе изменения моего приложения для использования в iOS6 и iPhone, я не могу понять, почему, когда я отправляю сообщение в Twitter с помощью новой социальной структуры, я должен дважды нажать "Отменить", чтобы закрыть кого-либо еще есть эта проблема или исправление? Вот код кнопки.

- (IBAction)twitterPost:(id)sender
{
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
    mySLComposerSheet = [[SLComposeViewController alloc] init];
    mySLComposerSheet = [SLComposeViewController   composeViewControllerForServiceType:SLServiceTypeTwitter];
    [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"This is my tweet, hello!",mySLComposerSheet.serviceType]];
    [self presentViewController:mySLComposerSheet animated:YES completion:nil];
}
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
    NSLog(@"dfsdf");
    switch (result) {
        case SLComposeViewControllerResultCancelled:
            break;
        case SLComposeViewControllerResultDone:
            break;
        default:
            break;
    }
}];


}

Ответы

Ответ 1

Если вы используете mySLComposerSheet, это отлично работает...

[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
[mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];

Ответ 2

Мой опыт работы с SLComposeViewController заключается в том, что контроллеры twitter и weibo необходимо отменить вручную, в то время как контроллер facebook лучше себя ведет.

Если я не отклоняю элементViewControllerAnimated самостоятельно, нажатие кнопки "Отправить" отправит сообщение в твиттере или вейбо, но я останусь с тем, что кажется невидимым для моего собственного представления. Таким образом, я больше не могу взаимодействовать с моим приложением.

Я не знаю, почему мое приложение работает так... Интересно, что завершениеHandler для отмены вызывается только один раз. Второй ответ отклоняет контроллер вида.

+ (void) shareText:(NSString*)text image:(UIImage*)image social:(NSString*)service url:(NSString*)url
{
    SLComposeViewController*    controller = [SLComposeViewController composeViewControllerForServiceType:service];

    [controller setInitialText:text];
    [controller addImage:image];
    [controller addURL:[NSURL URLWithString:url]];

    controller.completionHandler = ^(SLComposeViewControllerResult result) {
        if( SLComposeViewControllerResultDone == result )
        {
            NSLog(@"rewards for share: %@!", service );
        }
        if( ![SLServiceTypeFacebook isEqualToString:service] )  // facebook behaves
            [[CBLAppDelegate instance].activeViewController dismissViewControllerAnimated:true completion:nil];
    };
    [[CBLAppDelegate instance].activeViewController presentViewController:controller animated:true completion:nil];
}

Ответ 3

Обнаружена проблема. Это происходит только тогда, когда обработчик завершения добавляется в TWTweetComposeViewController. Если вы добавили, обязательно звоните:

[self rejectModalViewControllerAnimated: YES];

Ответ 4

Попробуйте этого приятеля

   [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {

        switch (result) {
            case SLComposeViewControllerResultCancelled:
                [self performSelector:@selector(showalert)];
                [mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
                break;
            case SLComposeViewControllerResultDone:
                [self performSelector:@selector(showalert1)];
                [mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
                break;

            default:
                break;


        }
    }];

Ответ 5

Проводка комментария выше как ответ:

Пробовал ли вы настройку completeHandler перед представлением контроллера просмотра?