2016-09-08 3 views
11

У меня есть приложение, которое использует панель инструментов в NSWindow. Я не хочу, чтобы пользователи могли настраивать эту панель по эстетическим соображениям. В Сьерра есть новый пункт меню, который вставляется в «Меню> Вид» под названием Show Tab Bar. Как отключить это? Включение этого только увеличивает размер панели инструментов, так как у меня нет дополнительных ярлыков, показываемых под значками.Как отключить параметр меню «Показать вкладку» в приложениях Sierra?

ответ

9

На 10.12, вам необходимо теперь установлено следующее, когда окно создается как Tab Bar теперь доступен по умолчанию:

[NSWindow setAllowsAutomaticWindowTabbing: NO]; 
4

Если вы не хотите компилировать против последних рамок, вы можете используйте следующий код в ваших NSWindowsController подразделам классов:

Swift:

override func awakeFromNib() { 
    if NSAppKitVersionNumber > 1500 { 
     self.window?.setValue(2, forKey: "tabbingMode") 
    } 
} 

Objective-C:

- (void)awakeFromNib { 
    if (NSAppKitVersionNumber > 1500) { 
     [self.window setValue:[NSNumber numberWithInt:2] forKey:@"tabbingMode"]; 
    } 
} 
20

Вы также можете сделать это на IB, на атрибуты инспектора окна

NSWindow attribute inspector

+0

Большое спасибо. Это помогло мне. – Tommy

3

Чтобы отключить обходе на отдельных окнах называют setTabbingMode:

if([window respondsToSelector:@selector(setTabbingMode:)]) { 
    // this particular window doesn't support tabbing in Sierra. 
    [window setTabbingMode:NSWindowTabbingModeDisallowed]; 
} 
1

Swift решение:

override func awakeFromNib() { 
    super.awakeFromNib() 
    if #available(OSX 10.12, *) { 
     tabbingMode = .disallowed 
    } 
} 
Смежные вопросы