Почему NSWindow без styleMask: NSTitledWindowMask не может быть keyWindow?

Проблема: у меня есть одно окно mainWindow и еще одно childWindow добавленное в mainWindow . childWindow – это class WindowExt . Этот class, который я определяю для метода catch, вызывает [NSWindow becomeKeyWindow] который должен быть вызван после [childWindow makeKeyWindow] . Если я создаю childWindow и попытаюсь сделать его keyWindow следующим образом:

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

метод [WindowExt becomeKeyWindow] для childWindow называется – все отлично, childWindow становится keyWindow.

Но если я создаю childWindow как

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

без NSTitledWindowMask , [WindowExt becomeKeyWindow] для childWindow никогда не childWindowchildWindow не становится keyWindow.

Это решение для дизайна Cocoa: windows без заголовка или панели изменения размера по умолчанию не могут стать ключевым окном .

Если вы хотите, чтобы окно без заголовка могло стать ключевым окном, вам необходимо создать подclass NSWindow и переопределить -canBecomeKeyWindow следующим образом:

 - (BOOL)canBecomeKeyWindow { return YES; } 

вы можете установить маску стиля в NSBorderlessWindowMask , чтобы сделать ее без полей

  • Каков наилучший способ модульного тестирования кода Objective-C?
  • self.variable и переменная разница
  • Как использовать NSToolBar в Xcode 6 и Storyboard?
  • Как использовать NSTimer?
  • Как проспать от сна программно, если крышка закрыта?
  • `` соглашение
  • Пробел над пользовательским представлением NSMenuItem
  • Могу ли я редактировать пиксели свойства UIImage CGImage
  • NSString для NSDate
  • NSMutableArray - заставить массив удерживать только определенный тип объекта
  • Cocoa Autolayout: обход содержимого с приоритетом сжатия содержимого
  • Давайте будем гением компьютера.