2017-05-14 1 views
0

tvOSでカスタムUIWindowインスタンスを使用すると、アプリはキーボードとリモートのシミュレータに応答しなくなります。 UIWindowインスタンスで設定する必要がある変数またはプロパティがありますか?tvOSのカスタムUIWindowがキーボード入力に応答しないアプリケーションを作成する

class AppDelegate: UIResponder, UIApplicationDelegate { 

    lazy var window : UIWindow? = { 
     let screen = UIScreen.main 
     let w = UIWindow(frame: screen.bounds) 
     return w 
    }() 

    // ... 
} 

理由は、私は、カスタムの色合いの色を持っているとtraitCollectionDidChange経由ダーク/ライトモードの変化に対応するためにUIWindowをサブクラス化する必要があるということです。

これはtvOS 10.2.1にあなたはUIWindowのインスタンスでmakeKeyAndVisible()を呼び出す必要が

答えて

-1

どうやら1は、ストーリーボードをインスタンス化し、カスタムUIWindowが必要な場合にも、ウィンドウを提示する必要があります。単にUIWindowインスタンスを提供するだけでは十分ではありません。

まず、メインアプリのファイルからUIMainStoryboardFileキーを削除します。UIMainStoryboardFileウィンドウをインスタンス化し、アプリデリゲートのプロパティに割り当てる

  1. :次にアプリケーション内にコードを追加

    はにハンドラを起動しました。

  2. ストーリーボードをインスタンス化します。
  3. 初期ビューコントローラのインスタンス化
  4. ビューコントローラをウィンドウに割り当てます。
  5. ウィンドウを表示します。
@UIApplicationMain 
    class AppDelegate: UIResponder, UIApplicationDelegate { 

     var window : UIWindow? 

     // ... 

     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

      window = MainWindow(frame: UIScreen.main.bounds) 
      // We need to instantiate our own storyboard instead of specifying one in `Info.plist` since we need our own custom `UIWindow` instance. 
      // Otherwise if we just create the custom UIWindow instance and let the system creates a storyboard, 
      // then the application won't respond to the keyboard/remote (user input). 
      let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main) 
      window?.rootViewController = storyboard.instantiateInitialViewController() 
      defer { 
       window?.makeKeyAndVisible() 
      } 

      // ... All other setup code 
     } 

     // ... 

    } 
関連する問題