Подтвердить что ты не робот

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 также предоставляет правильный путь к файлу.

Спасибо, Ник

4b9b3361

Ответ 1

Просто проверил и нашел решение. Не указывайте в keyWindow.

[uidController presentOpenInMenuFromRect:navRect inView:self.view animated:YES];

Я протестировал это, и это устранит проблему.

Ответ 2

Еще одна причина, по которой не работает iOS6 в контроллере uidocumentinteraction, заключается в том, что теперь используется новая панель действий/запуска (она показывает приложения, доступные для открытия документа). Мое приложение, которое отлично запускало iBooks с iOS5, потерпело неудачу, потому что я запустил из viewDidLoad, который был слишком ранним, и я получил сообщение об ошибке на текущем контроллере представления, чье представление не находится в иерархии окон, поэтому я изменил свой код на выполнение выбора после задержки 1 секунда. Приложение теперь вызывает iBooks через новую панель.