iOS-приложение, которое работает на двух экранах (без зеркалирования) - PullRequest
6 голосов
/ 02 ноября 2011

Я создал приложение для iPad, которое содержит слайд-шоу, и когда пользователь нажимает на это слайд-шоу, он / она может ввести некоторую информацию.

Что я хотел бы сейчас сделать, это отобразить слайд-шоусодержимое на телевизоре при подключении телевизора и iPad через AirPlay (или, если возможно, через кабель, но это только отражает вещи)

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

Как это можно сделать в iOS?Можно ли отобразить часть приложения на телевизоре?Так что не зеркальное отражение всего приложения.

Ответы [ 2 ]

18 голосов
/ 14 ноября 2011

Вы можете написать приложение для обработки 2 экранов UIS с помощью Airplay и Apple TV, а затем установить отдельный контроллер корневого просмотра для телевизора UIScreen и для iPad UIScreen. Затем отобразите изображение или слайд-шоу на контроллере просмотра телевизора и запустите его из событий вашего контроллера просмотра iPad!

ИЗМЕНЕНО ПОСЛЕ КОММЕНТАРИИ КЛИФОВ:

Итак, во-первых, в вашем приложении делегат в didFinishLaunchingWithOptions или didFinishLaunching настраивает уведомление о том, что экран подключился.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenDidConnect:) name:UIScreenDidConnectNotification object:nil];

Тогда вам нужно сохранить ссылку на отдельное окно и добавить к нему контроллеры, как и любое другое окно.

- (void) myScreenInit:(UIScreen *)connectedScreen:(UIViewController*)mynewViewController
{    
    //Intitialise TV Screen
   if(!windowTV)
    {
        CGRect frame = connectedScreen.bounds;
        windowTV = [[UIWindow alloc] initWithFrame:frame];
        windowTV.backgroundColor = [UIColor clearColor];
       [windowTV setScreen:connectedScreen];
        windowTV.hidden = NO;
    }

    UIViewController* release = windowTV.rootViewController;
    windowTV.rootViewController = mynewViewController;
    [release removeFromParentViewController];
    [release release];
}

- (void)setTvController:(UIViewController*)mynewViewController
{     
    UIViewController* release = windowTV.rootViewController;
    windowTV.rootViewController = mynewViewController;
    [release removeFromParentViewController];
    [release release];
}

- (void)screenDidConnect:(NSNotification *)notification {
     [self myScreenInit:[notification object]];
}
0 голосов
/ 05 декабря 2011

Похоже, что в iOS 5.0 есть ошибка, которая усложняет задачу. Вы должны включить зеркальное отображение из панели задач (прокручивая влево до того, как второй экран обнаруживается через API. Я разместил подробности в моем вопросе здесь: Как использовать iOS 5+ AirPlay для секунды экран

...