我正在使用 iPhone 4S 玩 AirPlay,但遇到了一些麻烦。我已经将我的 Apple TV 2 更新到了最新版本(我认为是 4.4.3?我忘记了,它在另一个房间,我懒得去检查)并且我在使用 Xcode 4.2 Build 4D199 时在我的 4S 上安装了 iOS 5.0 . 我编写了一个简单的 UIView 应用程序,它尝试在可用时在第二个屏幕上绘图。这是我的 viewDidLoad 中的内容:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view addSubview:[[MPVolumeView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]];
NSLog(@"Registering for screen connect events...");
// Do any additional setup after loading the view, typically from a nib.
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(screenDidConnect:)
name:UIScreenDidConnectNotification
object:nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(screenDidDisconnect:)
name:UIScreenDidDisconnectNotification
object:nil]; NSLog(@"There are %i connected screens.", ScreenCount);
if (ScreenCount > 1) {
self.secondWindow = [self myScreenInit:[[UIScreen screens] objectAtIndex:1]];
[self.secondWindow addSubview:[self createFullscreenViewForText:@"Second window" withSize:CGSizeMake(640, 480)]];
}
}
当我启用 TV Out 时,此代码在模拟器中工作,尽管如果我在调试时启用 TV Out,它总是崩溃。在模拟器的硬件菜单中启用 TV out 后,我必须重新启动应用程序。重新启动时,我在第二个屏幕上看到第二个屏幕 UILabel。在 iPhone 4S 上,如果我使用运行任务栏中的 AirPlay 控件一直到左侧启用 AirPlay,我才能完成这项工作。您会注意到,我在启动时向视图添加了一个 MPVolumeView 组件,我尝试使用它来连接我的 Apple TV,但无济于事。
如果我使用应用程序内 MPVolumeView,我可以成功断开与 Apple TV 的连接,但是当我再次使用它并选择 Apple TV 重新连接时,我没有收到 UIScreenDidConnectNotification。我再次看到第二个屏幕的唯一时间是启用镜像。如果我连接任何一个 AirPlay 控件,我只会计算 1 个屏幕并且永远不会收到通知。此外,每次启用镜像时,我都会在控制台日志中看到:
Could not find mapped image ColorOnGrayShadow_AirPlay.png
这似乎被打破了,我想知道其他人在这方面的经验。当我学习新事物时,我会继续玩弄和更新这篇文章。