2011-02-09 10 views
6

問題: 私は1つのウィンドウmainWindowとchildWindowmainWindowに追加しました。 childWindowは、一種のWindowExtクラスです。 catchメソッド呼び出し[NSWindow becomeKeyWindow]のために定義したこのクラスは、[childWindow makeKeyWindow]の後に呼び出さなければなりません。 私はchildWindowを作成し、次の方法でそれをkeyWindow作るしようとした場合:childWindowため[WindowExt becomeKeyWindow]が呼び出されなぜNSWindowスタイルマスクなし:NSTitledWindowMaskはkeyWindowにできませんか?

WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect 
          styleMask:NSBorderlessWindowMask | NSTitledWindowMask 
          backing:NSBackingStoreBuffered 
           defer:NO]; 
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove]; 
[childWindow makeKeyWindow]; 

方法 - すべての罰金、childWindowなっkeyWindow。

しかし、私はchildWindowためNSTitledWindowMaskなし

WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect 
styleMask:NSBorderlessWindowMask 
backing:NSBackingStoreBuffered 
defer:NO]; 
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove]; 
[childWindow makeKeyWindow]; 

[WindowExt becomeKeyWindow]としてchildWindowを作成した場合に呼び出されることはありません - childWindowはkeyWindowなりません。

答えて

21

これはココアのデザイン決定です:windows without title or resize bar cannot become key window by defaultです。

あなたはtitlelessウィンドウがキーウィンドウになることができるようにしたい場合は、あなたがNSWindowのサブクラスを作成し、次のように-canBecomeKeyWindowを上書きする必要があります。

- (BOOL)canBecomeKeyWindow { 
    return YES; 
} 
0

あなたが順番にNSBorderlessWindowMaskにスタイルマスクを設定することができます縁なしにするには

関連する問題