Показать только «Настройка панели инструментов ...» в контекстном меню NSToolbar в Swift
Я знаю, что этот вопрос уже задавали много раз, но это, кажется, нет лучшего решения для него.
Изменение свойства allowsUserCustomization
недвижимости не помогает. Кажется, нет никакого API для настройки элементов в контекстном меню панели инструментов.
Finder приложение не имеет «использовать Малый размер» в то время как Notes приложение имеет только «Настройка панели инструментов ..»
Я хотел бы знать, если есть способ подклассы или продлить или делать все, что в NSToolbar для достижения цель?
Обновлено 1:
Согласно @Khundragpan и this post, задача 1 может быть решена:
if let contextMenu = window?.contentView?.superview?.menu {
for item in contextMenu.items {
if item.title != "Customize Toolbar…" {
contextMenu.removeItem(item)
}
}
}
Но я не думаю, что это лучший способ.
Update 2:
Другой способ решения проблемы 1 (спасибо @ 1024jp указать this file):
if let contextMenu = window?.contentView?.superview?.menu {
contextMenu.items.forEach({ (item) in
if let action = item.action,
NSStringFromSelector(action) != "runToolbarCustomizationPalette:" {
contextMenu.removeItem(item)
}
})
}
Update 3:
Тонна спасибо до @ 1024jp за помощь. Я могу удалить эти вещи с помощью нескольких советов и трюков от него. Проверьте ответ ниже.
проверить эту ссылку http://stackoverflow.com/questions/8413111/how-to-customize-the-context-menu-of-nstoolbar – Khundragpan
вы можете получить на панели инструментов меню с помощью 'пусть toolBarMenu = окно? .contentView? .superview? .menu'. Теперь удалите пункты меню, которые вы не хотите. – Khundragpan
@Khundragpan Спасибо! Но это не решает проблему 2-го (ссылаясь на изображение). И я не думаю, что это правильный способ справиться с этим. –