在两个屏幕上运行的iOS应用程序(不镜像)
我创build了一个包含幻灯片的iPad应用程序,当用户点击此幻灯片时,他/她可以input一些信息。
我现在想要做的是当通过AirPlay连接电视和iPad(或者如果可能的话,电缆,但似乎只是反映的东西)在电视上显示幻灯片的内容,
可以这样做吗? 我们可以在电视和iPad上播放幻灯片,然后当用户点击iPad上的幻灯片时,将显示凭证input屏幕,但在电视上仍然会显示底层幻灯片,而不是凭据?
这怎么可以在iOS中完成? 是否可以在电视上显示一部分应用程序? 所以不要镜像整个应用程序。
您可以使用Airplay和Apple TV编写应用程序来处理2个UIScreen,然后为TV UIScreen和iPad UIScreen设置一个单独的根视图控制器。 然后在电视的视图控制器上显示图像或幻灯片,并从您的事件中运行iPad视图控制器!
在CLIFS评论之后修改:
因此,首先在您的应用程序委托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]]; }
在iOS 5.0似乎有一个错误,这使得这个棘手。 你必须从正在运行的任务栏启用镜像(通过API滚动到左边第二个屏幕之前,我已经在这里发布了详细的问题: 如何使用iOS 5+ AirPlay作为第二个屏幕