在两个屏幕上运行的iOS应用程序(无镜像)

时间:2011-11-01 23:44:40

标签: ios airplay

我创建了一个包含幻灯片的iPad应用程序,当用户点击此幻灯片时,他/她可以输入一些信息。

我现在要做的是在通过AirPlay连接电视和iPad时在电视上显示幻灯片显示内容(如果可能的话,还可以连接电缆,但这似乎只是反映了事情)

可以这样做吗?我们是否可以在电视和iPad上播放幻灯片,然后当用户点击iPad上的幻灯片时,凭据输入屏幕将显示但在电视上仍会显示底层幻灯片而不显示凭据?

如何在iOS中完成?是否可以在电视上显示部分应用程序?所以不要反映整个应用程序。

2 个答案:

答案 0 :(得分:18)

您可以编写应用程序以使用Airplay和Apple TV处理2个UIScreens,然后为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]];
}

答案 1 :(得分:0)

iOS 5.0中似乎存在一个使这个问题变得棘手的错误。您必须从正在运行的任务栏启用镜像(在通过API检测到第二个屏幕之前向左滚动。我在此处的问题中发布了详细信息:How to use iOS 5+ AirPlay for a second screen