将ipad连接到外接显示器

时间:2010-05-09 17:42:50

标签: cocoa-touch 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;
}

这是否应该将所有内容重定向到外部显示器?它的触摸/手势效果如何?我在Apple应用程序中看到,控件等都留在了ipad屏幕上......

1 个答案:

答案 0 :(得分:5)

您需要为要显示的每个屏幕(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

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