UIDocumentInteractionController: "Открыть в" видно на iPhone, но не на iPad - почему?

Для тестирования я написал два приложения:

  • Первый проигрывает файл MP3, используя UIDocumentInteractionController
  • Второй ничего не делает, но регистрируется для типа файла "public.mp3"

Если я разверну приложения в iPhone Simulator, в моем приложении MP3-плеера сверху появится кнопка "Открыть в" MP3Test "". Однако, если я разверну на iPad Simulator, там не будет ни кнопки, ни меню "Открыть".

Это было протестировано с iOS5.

Может кто-нибудь объяснить, если это ошибка или особенность, и в чем причина?

3 ответа

Зависит от того, откуда вы это представляете.

Если вы представляете его где-то в середине экрана или ниже, просто представьте его в кадре объекта, с которого вы представляете.

если это на панели навигации, попробуйте это:

NSString *fileToOpen = [[NSBundle mainBundle] pathForResource:@"License" ofType:@"pdf"];
UIDocumentInteractionController *controller = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:fileToOpen]];
controller.delegate = self;

CGRect navRect = self.navigationController.navigationBar.frame;
navRect.size = CGSizeMake(1500.0f, 40.0f);
[controller presentOptionsMenuFromRect:navRect inView:self.view animated:YES];

IPad имеет сходство с всплывающими окнами (см. UIPopover), поэтому он представляет в них UIActionSheet. Столкнувшись с похожей проблемой, с которой вы столкнулись, мой UIDocumentInteractionController был представлен из UIBarButtonItem (в результате - презентация UIPopover), а не из самого представления (что-то, что отлично работало на iPhone):

1) Сохранить ссылку на кнопку действия (у меня есть моя в моей панели навигации).

2) Используйте PresentOpenInMenu, используя ссылку на кнопку действия, а не ссылку "Просмотр", что приводит к презентации UIPopover.

Обратите внимание, что изменение не влияет на приложение iPhone - оно ведет себя как раньше, то есть открывает OpenInMenu из нижней части экрана, как если бы вы использовали ссылку View для его представления.

Я надеюсь, что это полезно и для вас.

На iPad UIDocumentInteractionController выглядит как Pop Up Попробуйте что-то вроде этого

-(void)shareClick:(UIButton*)sender {
   /*some code*/
   CGRect rectFor appearing = [sender.superview convertRect:sender.frame toView:self.view];
   [interactionController presentOptionsMenuFromRect:rect inView:self.view animated:YES];
}
Другие вопросы по тегам