2010-05-09 114 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