2012-01-10 3 views
3

Для тестирования я написал два приложения:UIDocumentInteractionController: «Открыто», видимое на iPhone, но не на iPad - почему?

  • Сначала один играет MP3-файл с помощью UIDocumentInteractionController
  • второй делает ничего, кроме регистров для типа файла «public.mp3»

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

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

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

ответ

1

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

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

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

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

Я не представляя вообще. Кнопка, которая должна отображать меню с доступными приложениями, отображается на iPad, но не на iPhone. Я зарегистрирую MP3 (приложение 1) и USE UIDocumentInteractionController для воспроизведения MP3 (приложение 2). На iPad приложение 2 предлагает мне открыть MP3 в приложении 1. На iPhone UIDocumentInteractionController не показывает кнопку «Открыть в». – Krumelur

0

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

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

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

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

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

+0

Хм, нет. В приложениях есть UIToolbar сверху. И iOS автоматически ставит «открытую» там на iPhone, но не на iPad. Я сам не добавляю никаких кнопок. – Krumelur

-1

На 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]; 
} 
Смежные вопросы