我创建了一个包含幻灯片的 iPad 应用程序,当用户点击此幻灯片时,他/她可以输入一些信息。
我现在想做的是在通过 AirPlay 连接电视和 iPad 时在电视上显示幻灯片内容(如果可能,也可以使用电缆,但这似乎只是反映了事情)
这可以做到吗?我们可以让幻灯片在电视和 iPad 上运行,然后当用户在 iPad 上点击幻灯片时,凭据输入屏幕将显示,但在电视上仍然会显示基础幻灯片而不是凭据?
如何在 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 进行第二个屏幕