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];
}