Я использую следующий код для обмена Twitter в своем приложении:
SLComposeViewController *twitter = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[twitter setInitialText:@"some text"];
twitter.completionHandler = ^(SLComposeViewControllerResult result)
{
// do something...
[topViewController dismissViewControllerAnimated:YES completion:nil];
};
[topViewController presentViewController:twitter animated:YES completion:nil];
Теперь, если учетные записи Twitter не настроены и приложение Twitter не установлено, я получаю следующее предупреждение:
Он делает именно то, что должен: нажатие «Отмена» закрывает как окно оповещения, так и окно создания сообщения в Твиттере. Нажатие «Настройки» также закрывает оба вида и открывает настройки. Хороший.
Теперь, если учетные записи Twitter не настроены, но приложение Twitter установлено, я получаю следующее предупреждение:
Обратите внимание, что нет кнопок «Отмена» и «Настройки», а есть только кнопка «ОК». При нажатии окно оповещения исчезает, но окно создания Твиттера остается, а кнопка «Опубликовать» становится серой. Таким образом, пользователю остается снова нажать «Отмена», чтобы закрыть представление создания и перейти к настройкам. Не так приятно.
Обратите внимание, что не имеет значения, проверяю ли я доступность службы перед представлением SLComposeViewController:
[SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter];
Знаете ли вы, почему такая разница в поведении и есть ли способ получить такое же поведение, независимо от того, установлено приложение Twitter или нет?
Протестировано на iOS 9.2.1, iPad Air (2-го поколения) и iPhone 6 Plus.