UIDocumentInteractionController: «Открыть в» видно на iPhone, но не на iPad - почему? - PullRequest
3 голосов
/ 10 января 2012

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

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

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

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

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];
0 голосов
/ 22 декабря 2013

На 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];
}
0 голосов
/ 12 января 2013

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

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

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

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

Надеюсь, это поможет и вам.

...