UIDocumentInteractionController больше не работает в iOS6
У меня есть приложение, которое делится с Instagram, созданным для iOS5, а теперь и в iOS6, совместное использование больше не работает, хотя canOpenURL
возвращает true и код выполняется. Изображения сохраняются в папке документов приложения с .igo
расширение. Это передается в Instagram с com.instagram.exclusivegram.
Код ниже, он вводит оператор if и отображает "здесь в", но не открывает диалоговое окно "Поделиться с", как это было в нижней части экрана.
NSLog(@"%@", _imgToUpload);
NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"];
if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
uidController = [[UIDocumentInteractionController alloc] init];
//imageToUpload is a file path with .igo file extension
uidController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:_imgToUpload]];
uidController.UTI = @"com.instagram.exclusivegram";
uidController.delegate = self;
CGRect navRect = self.view.frame;
[uidController presentOpenInMenuFromRect:navRect inView:[UIApplication sharedApplication].keyWindow animated:YES];
NSLog(@"here in");
}
_imgToUpload
также предоставляет правильный путь к файлу.
Спасибо ник
2 ответа
Просто провел некоторое тестирование и нашел решение. Не присутствует в ключевом окне.
[uidController presentOpenInMenuFromRect:navRect inView:self.view animated:YES];
Я проверил это, и это решит проблему.
Другая причина того, что контроллер взаимодействия с uidocument не работает в iOS6, заключается в том, что теперь используется новый лист действий / панель запуска (на ней показаны приложения, доступные для открытия документа). Мое приложение, которое работало нормально при запуске iBooks с iOS5, не удалось, потому что я запустил из viewDidLoad, который был слишком ранним, и я получил ошибку на текущем контроллере представления, "чье представление не находится в иерархии окон", поэтому я изменил свой код для выполнения выбора после задержки 1 секунда. Приложение теперь вызывает iBooks через новую панель.