У меня есть код социального обмена, который выглядит так:
SLComposeViewController *composer = [SLComposeViewController composeViewControllerForServiceType:…];
[composer setInitialText:…];
[composer addURL:…];
[composer setCompletionHandler:^(SLComposeViewControllerResult result) {
[someController dismissViewControllerAnimated:YES completion:^{
… // 1
}];
}];
[someController presentModalViewController:composer animated:YES];
Проблема в том, что код ведет себя по-разному для Facebook и Twitter. Когда пользователь подтверждает экран создания Facebook, композитор, по-видимому, закрывает себя, потому что обработчик завершения, отмеченный как 1, никогда не вызывается, и даже когда я удаляю вызов dismissViewControllerAnimated:
, все работает нормально.
С другой стороны, когда пользователь подтверждает экран создания Twitter, а я не закрываю его вручную, экран создания сообщения выдвигается, но приложение остается зависшим, как будто какой-то контроллер все еще находится на переднем плане. Когда я добавляю вызов dismissViewControllerAnimated:
, проблема исчезает, и обработчик завершения (1) вызывается правильно.
Вы тоже заметили такое поведение? Я делаю что-то неправильно? Это текущая версия iOS 6, пример кода на GitHub. Я сообщил о проблеме в Apple (Radar #12642889), пока никакой реакции.