2011-11-01 11 views
6

He creado una aplicación para iPad que contiene una presentación de diapositivas y cuando esta presentación de diapositivas es aprovechada por el usuario puede ingresar cierta información.iOS aplicación que se ejecuta en dos pantallas (sin duplicación)

Lo que me gustaría hacer ahora es para mostrar el contenido de diapositivas en un televisor cuando se conecta el televisor y iPad a través de AirPlay (o cable, si es posible, sino que sólo parece reflejar cosas)

Puede ser esto ¿hecho? ¿Podemos hacer que la presentación de diapositivas se ejecute en el televisor y también en el iPad y luego, cuando el usuario toque la presentación de diapositivas en el iPad, se mostrará la pantalla de entrada de credenciales pero en la TV todavía se mostrará la presentación subyacente y no las credenciales?

¿Cómo se puede hacer esto en iOS? ¿Es posible mostrar una parte de la aplicación en el televisor? Entonces no refleja toda la aplicación.

+0

Estoy experimentando con AirPlay n iPhone 4s. He logrado que funcione con mi Apple TV 2 solo después de configurar la opción espejo en el control airplay ubicado en la barra de tareas. Voy a buscar otras posibles respuestas aquí antes de publicar una pregunta similar. – Cliff

+0

puede ¿Marcas mi respuesta como correcta? ¿Seguramente ahora con esta cantidad de votos positivos se considera correcta? – Dev2rights

Respuesta

18

Puede escribir la aplicación para manejar 2 UIScreens usando Airplay y un Apple TV luego configure un controlador de vista de root independiente para el UIScreen de TV y para el UIScreen del iPad. Luego, visualice la imagen o presentación de diapositivas en el controlador de vista del televisor y ejecútelo desde los eventos de su controlador de vista de iPads.

modificados tras COMENTARIO clifs:

Así, en primer lugar en delegado de la aplicación en didFinishLaunchingWithOptions o didFinishLaunching configurar una notificación para recibir la pantalla se conectaron.

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

Luego hay que mantener una referencia a su ventana separada y empujar a los controladores como lo haría con cualquier otra ventana.

- (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

Esta respuesta no incluye detalles sobre cómo se hace esto. Solo menciona que es posible con un signo de exclamación excitado al final. – Cliff

+2

Está bien, ahora estás acantilado, por favor, vota. – Dev2rights

+0

Quité mi dow n voto. Todavía hay más en la respuesta aquí. Alguien completamente nuevo en la API (como lo era hace unos días) no vería nada en una pantalla secundaria después de lo publicado anteriormente. – Cliff

0

Parece que hay un error en iOS 5.0 que hace esto complicado. Debe habilitar la creación de reflejos desde la barra de tareas en ejecución (desplazarse hasta la izquierda antes de que se detecte una segunda pantalla mediante la API. He publicado detalles en mi pregunta aquí: How to use iOS 5+ AirPlay for a second screen

+0

Apple cree claramente que esto no es un error, sino una característica. – coco

+0

Digo que el vaso está medio vacío, dicen que está medio lleno ... Una característica sería claramente algunas llamadas API tipo GameKit para buscar y detectar cerca de dispositivos compatibles con AirPlay. – Cliff

Cuestiones relacionadas