TWTweetComposeViewController не увольняется на симуляторе iPad - PullRequest
0 голосов
/ 14 марта 2012

В моем приложении есть лист действий, и одна из его кнопок модально открывает TWTweetComposeViewController.На симуляторе iPhone кнопка отмены на твиттере прекрасно работает и закрывает вид.Однако на симуляторе iPad кнопка отмены не работает, и на экране остается твиттер.Это еще более странно, потому что после нажатия кнопки отмены клавиатура убирается и основные виды становятся активными.Он ведет себя так, как будто представление было отклонено, но оно все еще там.

Код, который я использовал, когда пользователь нажал кнопку действия:Чтобы решить эту проблему, или это ошибка симулятора?

PS: Мое приложение - приложение с вкладками, и этот код вызывается из одного из контроллеров представления панели вкладок.

1 Ответ

5 голосов
/ 18 апреля 2012

У меня такая же проблема на реальном устройстве. Оказывается, это ошибка в Apple SDK для TWTweetComposeViewController.

Смотрите отчет об ошибке здесь на OpenRadar: http://openradar.appspot.com/radar?id=1484405.

Когда блок завершениеHandler добавляется в TWTweetComposeViewController, обработчик завершения должен вызывать - [UIViewController dismissModalViewControllerAnimated:], даже если представление для составителя твитов отклоняется с его отменой или отправить кнопки. Невыполнение этого условия приводит к тому, что сенсорные события не достигают просмотр, который породил твит композитора.

Просто подумал, что я добавлю, как я делаю вещи, хотя это не правильно, следуя указаниям памяти, это обходной путь:

[compose setCompletionHandler:^(TWTweetComposeViewControllerResult result){

    dispatch_async(dispatch_get_main_queue(), ^{

        if(self.delegate != nil)
        {
            if (result == TWTweetComposeViewControllerResultDone)
            {
                [self.delegate twitterOperation:TETwitterOperationTweet
                          completedSuccessfully:YES
                             withResponseString:@"Tweet Successful"];
            }
            else if(result == TWTweetComposeViewControllerResultCancelled)
            {
                [self.delegate twitterOperation:TETwitterOperationTweet
                          completedSuccessfully:NO
                             withResponseString:@"Tweet Cancelled"];
            }
        }

        // Dismiss per Apple's Twitter example
        [self.shownInViewController dismissViewControllerAnimated:YES 
                                                       completion:nil];

        // Yuck. But it's necessary.
        [compose release];
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...