2010-05-09 87 views
1

我正尝试使用以下命令将我的ipad应用连接到外部屏幕(现在不检查正确的分辨率 - 只是希望它启动并运行)。将ipad连接到外部显示器

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    [window addSubview:[navigationController view]]; 
    if ([[UIScreen screens] count] > 1) { 
      window.screen = [[UIScreen screens] objectAtIndex:1]; 
    } 
    [window makeKeyAndVisible]; 
    return YES; 
} 

这是否应该将所有内容重定向到外部显示器?它如何与触摸/手势一起工作?我看到在苹果应用程序,控制等留在iPad屏幕上...

回答

5

你需要为每个屏幕显示到iPad(iPad,外部显示器等)有一个单独的UIWindow实例。您不需要简单地将主UIWindow的屏幕设置为外部显示器,而是需要为该显示器创建一个独特的UIWindow,并可能将您的视图从iPad窗口移动到外部显示窗口。否则,您将无法在iPad屏幕上接收触摸输入以控制远程显示的内容。

例如,下面的代码将创建一个外部显示器上一个新的窗口(与externalScreen是适当的UIScreen实例):

CGRect externalBounds = [externalScreen bounds]; 
externalWindow = [[UIWindow alloc] initWithFrame:externalBounds]; 

UIView *backgroundView = [[UIView alloc] initWithFrame:externalBounds]; 
backgroundView.backgroundColor = [UIColor whiteColor]; 

[externalWindow addSubview:backgroundView]; 

[backgroundView release]; 

externalWindow.screen = externalScreen; 
[externalWindow makeKeyAndVisible]; 

你也想观看的屏幕连接/断开事件您申请并妥善处理。为此,请听取UIScreenDidConnectNotificationUIScreenDidDisconnectNotification

如果你想看到一种处理外部显示器的方法,我有一个在iPhone/iPad应用程序的最新代码中工作的原始示例。

+0

谢谢!我有一本类似于书籍的应用程序,所以我不清楚如何更新翻页等显示内容。 – Charlie 2010-05-10 18:15:17

+0

@Josh P. - 如果镜像显示,您可能可以使用发布的通知来响应手势,两个独立窗口的视图响应相同的通知,从而保持显示同步。 – 2010-05-10 19:22:50

+0

对不起 - 以为我在这里丢失了一些东西......如果我将相同的根视图控制器添加到多个窗口,或者我必须在根视图控制器级别创建多个窗口,然后手动确保转发事件? – Charlie 2010-05-10 22:25:20