我正在尝试使用以下内容将我的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屏幕上......
答案 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];
您还需要在应用程序中监视屏幕连接/断开连接事件,并适当地处理它们。为此,请收听UIScreenDidConnectNotification
和UIScreenDidDisconnectNotification
。
如果你想看到一种处理外部显示器的方法,我在我的Molecules iPhone / iPad应用程序的最新代码中有一个粗略的例子。