cocoa macos nswindow

cocoa - ¿Por qué NSWindow sin styleMask: NSTitledWindowMask no puede ser keyWindow?



macos (2)

Problema: tengo una ventana mainWindow y otra childWindow añadidas a mainWindow . childWindow es una especie de clase WindowExt . Esta clase I define para llamar al método catch [NSWindow becomeKeyWindow] que debe [childWindow makeKeyWindow] después de [childWindow makeKeyWindow] . Si creo childWindow e intento convertirlo en keyWindow de la siguiente manera:

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

método [WindowExt becomeKeyWindow] para childWindow se llama - todo bien, childWindow convierte en keyWindow.

Pero si creo childWindow como

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

sin NSTitledWindowMask , [WindowExt becomeKeyWindow] para childWindow nunca se llama - childWindow no se convierte en keyWindow.



puede establecer la máscara de estilo en NSBorderlessWindowMask para que sea sin NSBorderlessWindowMask