提问人:Remco Poelstra 提问时间:11/11/2023 更新时间:11/11/2023 访问量:13
侧边栏中的 macOS 工具栏项目在侧边栏隐藏时转到溢出菜单
macOS toolbar items in sidebar go to overflow menu when sidebar is hidden
问:
我有一个工具栏,带有第二个分隔线和一个跟踪符。.sidebarTrackingSeparator
NSTrackingSeparatorToolbarItem
所有三个生成的工具栏分区中都有工具栏项,但中间的工具栏项目前已被删除以避免混乱。还有标准的窗口(文档)标题:
第二个跟踪分隔符工作正常。当面板折叠时,工具栏项目仍然可见,并用一条小线指示跟踪器的位置。
侧边栏跟踪项出现问题。当侧边栏折叠时,其上方的工具栏项将移至溢出菜单:
工具栏上还剩下大量空间,因此没有理由将它们移动到溢出菜单。为什么它们被移到那里,而不是显示在窗口标题的左侧?
奇怪的是,如果我的应用程序在侧边栏已经折叠的情况下启动,那么这些项目将显示在我期望它们的位置:
一旦显示侧边栏并再次折叠,它们就会消失。
通过自定义更改(系统提供的)侧边栏跟踪器会给出相同的行为。NSTrackingSeparatorToolbarItem
我使用委托创建工具栏项目:
extension WindowController: NSToolbarDelegate {
func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
return [.toggleSidebar, .importData, .toggleGrid, .toggleInspector, .sidebarTrackingSeparator, .splitViewTracker]
}
func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
return [.toggleSidebar, .importData, .sidebarTrackingSeparator, .toggleGrid, .splitViewTracker, .toggleInspector]
}
func toolbar(_ toolbar: NSToolbar, itemForItemIdentifier itemIdentifier: NSToolbarItem.Identifier, willBeInsertedIntoToolbar flag: Bool) -> NSToolbarItem? {
let item = NSToolbarItem(itemIdentifier: itemIdentifier)
switch itemIdentifier {
...
case .splitViewTracker:
return NSTrackingSeparatorToolbarItem(identifier: itemIdentifier, splitView: window!.contentViewController!.view.subviews[0] as! NSSplitView, dividerIndex: 1)
default:
break
}
return item
}
如何确保侧边栏折叠时侧边栏工具栏项仍显示在工具栏上(并且有足够的空间)?
答: 暂无答案
评论