2017-12-20 8 views
0

私はストーリーボードを使ってMacアプリを開発しています。私はNSViewControllerを内容として表示するウィンドウを持っていて、NSSplitViewControllerを埋め込んだ「コンテナビューコントローラ」を含んでいます。レスポンダチェーンの埋め込みビューコントローラを作成する方法は?

enter image description here

予想される動作は、ファーストレスポンダにtoggleSidebarアクションをトリガーするメニュー項目は、実際にサイドバーとしてマークされていますNSSplitViewControllerの項目を崩壊するような、レスポンダチェーンの一部であることをNSSplitViewControllerためであります。

しかし、これは起こらず、メニュー項目は無効のままです。だから私の質問は、どうすればNSSplitViewControllerをレスポンダーチェーンの一部にすることができますか?

答えて

0

nextReponsderプロパティのチェックはNSResponderです。このプロパティはレスポンダチェーンを定義します。通常、Cocoaフレームワークで定義されたレスポンダの変更に合わせて自動的に設定されますが、チェインを別の方向に挿入/スキップ/迂回するように変更できます。

たとえば、ある時点(私に質問しないでください)で、Cocoaはウィンドウのコントローラを応答側チェーンに含めて開始しました。

- (void)windowDidLoad 
{ 
    // Sent when the controller's window has been loaded from the nib 
    [super windowDidLoad]; 
    NSWindow* window = self.window; 

    // Make sure this window controller is in the responder chain 
    NSResponder* nextResponder = window.nextResponder; // get our window's next responder 
    if (nextResponder!=self) 
     { 
     // running earlier OS X that does not include the window controller in the chain: patch us in 
     self.nextResponder = nextResponder; 
     window.nextResponder = self; 
     } 

-windowDidLoad-viewDidLoad、および-awakeFromNibは、彼らが含まれてレスポンダチェーンを調整するためにすべての良い場所で、または:私のアプリはMacOSのすべてのバージョンで一貫して動作するように、私はこの私の窓のコントローラーのようなコードが含まれます必要なオブジェクトを除外します。

関連する問題