6

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

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

这可以做到吗?我们可以让幻灯片在电视和 iPad 上运行,然后当用户在 iPad 上点击幻灯片时,凭据输入屏幕将显示,但在电视上仍然会显示基础幻灯片而不是凭据?

如何在 iOS 中做到这一点?是否可以在电视上显示应用程序的一部分?所以不镜像整个应用程序。

4

2 回答 2

19

您可以编写应用程序以使用 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]];
}
于 2011-11-14T13:08:57.933 回答
0

iOS 5.0 中似乎存在一个错误,这使得这很棘手。您必须从正在运行的任务栏启用镜像(在通过 API 检测到第二个屏幕之前一直向左滚动。我在这里的问题中发布了详细信息:如何使用 iOS 5+ AirPlay 进行第二个屏幕

于 2011-12-05T04:01:37.650 回答