问题标签 [nstoolbaritem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1530 浏览

cocoa - 相关控制器中的 NSToolbarItem 验证

我有一个 NSToolbarItem,其视图为 NSButton,主菜单中有一个 NSMenuItem。两者都有相同的动作,发送给第一响应者,而不是特定目标。该方法最终在 NSSplitViewController 的子类中实现,位于窗口内容视图的视图层次结构中。我想验证这两个项目,但让特定的拆分视图控制器负责验证,因为它依赖于该控制器本地的一些条件。

我覆盖validateToolbarItem(_:)validateMenuItem(_:)在那个拆分视图控制器中。对于菜单项,这是按预期工作的。调用该方法并进行验证。validateToolbarItem(_:)但是,从不调用。

根据Apple 的文档,NSToolbar 不会发送validateToolbarItem(_:)到基于视图的工具栏项目。为了测试这一点,我用图像工具栏项目替换了工具栏项目,它可以按预期工作。

基于此,我遇到了几种解决方案,但它们并不是我想要的。

  • 子类 NSToolbarItem 并覆盖validate()。但是,没有给出关于我最终如何让控制器validateToolbarItem(_:)调用的指导。

  • 子类 NSToolbar 和 override validateVisibleToolbarItems(),然后向第一响应者发送消息。在这里,我遇到了问题,我无法向拆分视图控制器发送消息,因为它位于工具栏的响应程序链之外。

  • 子类 NSToolbar 如上所述,但validateToolbarItem(_:)在响应者链中的控制器中实现,例如 NSWindowController。这会起作用,但是我必须添加额外的代码来处理菜单项不需要的内容。

是否有一个优雅的解决方案可以像图像工具栏项和菜单项一样工作?

0 投票
1 回答
604 浏览

swift - 带有徽章计数器的自定义 NSToolbarItem

我正在尝试在自定义 NSToolbarItem 内的 NSButton 上添加自定义徽章计数器圈。

它应该看起来像这样(红色圆圈和里面的数字):

在此处输入图像描述

我已经尝试通过添加一个内联按钮在情节提要中做到这一点,但我对它的定位没有太多控制,并且也无法为徽章设置纯色。

失败的尝试:

在此处输入图像描述 在此处输入图像描述

然后我尝试实现这个家伙技术(我转换为 swift3):http ://bertmcdowell.com/posts/2013/nstoolbarbadgeditem.html

但是这种技术的问题在于它直接继承了 NSToolbarItem,所以我不能将它绘制到 NSButton 的边界之外。结果如下:

在此处输入图像描述

我觉得我需要在 NSButton 后面绘制一个自定义视图,以便它有空间在右上角绘制徽章而不会被剪裁。还有其他想法吗?

0 投票
1 回答
104 浏览

macos - NSToolbarItem 在可可触摸(os x)Mac 中总是为零?

我已经为 NSSearchField 设置了 IBOutlet 但它总是在 .m 文件中找到 nil 。为什么???

如果有任何想法,请给出与我的问题相关的答案。在此处输入图像描述

0 投票
1 回答
646 浏览

macos - 具有分段控制的 NSToolbarItem - 图像未正确呈现

我正在尝试模拟 Xcode 的工具栏控件来显示/隐藏导航器和检查器:

这家伙

...但没有底部窗格(仅左侧和右侧:两段)

我从 Xcode 的 UI 中截取图标并在图像编辑应用程序中跟踪它们。左窗格的资源是:


@1x:

左图标@1x

(20x20 @72 dpi)


@2x:

左图标@2x

(40x40 @72 dpi,虽然使用 20x20 @144 dpi 似乎没有区别)


右窗格的对应项相同,但水平翻转。

所有资源都存储在资产目录中,如下所示:

在此处输入图像描述

我在工具栏上放置了一个分段控件,以创建一个带有分段控件的工具栏项,并为每个段(0 和 1)设置图像属性。

两个段的图像缩放设置为“按比例缩小”。段控件已选中段宽度“固定”,两个段的宽度均为 48。工具栏项的最小尺寸为 (83 x 25),最大尺寸为 (100 x 28)。

图标在故事板上正确显示(界面生成器)。

但是,当我运行该应用程序时,我无法正确显示图标图像。

  • 如果我在视网膜显示器上启动我的应用程序,则任何部分都不会显示任何图标。
  • 如果我将窗口移动到外部非视网膜显示器,则会显示两个图标。
  • 如果我从 w 目录中删除两个图像集中的一个并运行该应用程序,则另一个图标将正确显示!(在任一显示器上)
  • 如果我进一步为两个段设置相同的剩余图像,它们将正确显示!
  • 如果我将两个图像集都保留在项目中,但将其中一个片段中的图像字段重置为空,则不会显示另一个图标!

到底是怎么回事??

在 GitHub 上放了一个示例项目来重现该问题。


编辑:为了确保,我使用 cartool 命令行实用程序从已编译的应用程序二进制文件中提取了资源(如本答案中所述),并且所有 4 个图像的大小都正确...


解决方案:正如Ivan 在下面的回答中所建议的,我切换到使用矢量图形 (PDF) 作为图标。我下载了 Acorn 的试用版并以 1 倍大小重新创建了我的图标,然后导出为 PDF。

为了避免在运行时以@2x 的放大尺寸出现模糊,我必须确保编辑器中的所有坐标都是整数,并在矢量形状检查器中为每个形状图层选中“对齐像素”框:

橡子用户界面

(美好的结局)

0 投票
1 回答
1811 浏览

macos - 如何使用图标创建一致的工具栏按钮

所需外观

我希望为我的应用程序制作一个工具栏,其中包含一些简单的按钮,每个按钮都有一个单色图标。下面是一些类似于我正在尝试实现的工具栏按钮的示例,来自 Mail 的撰写窗口:

邮件撰写窗口工具栏按钮

请注意,这些按钮具有一致的大小、内部填充、填充和阴影。这是整个 macOS 中非常一致的样式,出现在 Mail、Safari、Finder 等中。这让我怀疑有一个标准化的 UI 组件来创建此类按钮。

如果我使用分段控件,每个按钮看起来都是正确的,每个图标都被正确填充:

分段控制

现在我想添加与样式匹配的单个按钮。

尝试 1

我的第一次尝试是在工具栏上添加一个“按钮”(NSButton):

这导致一个宽按钮有点太短,并且没有与分段控件对齐:

尝试 1

尝试 2

我的第二次尝试是使用分段控件,只有 1 个分段。

这导致按钮的形状、大小等正确,但相对于标签偏离了中心。

尝试 2

当然,我可以手动调整按钮以匹配目标,但我觉得我错过了一些东西。创建这些标准按钮的正确方法是什么?

0 投票
1 回答
219 浏览

swift - 使 NSToolbarItem 成为第一响应者

在我的 MacOS 应用程序NSSearchField中,工具栏中有一个。我想让用户通过按下来集中注意力CMD+F(与许多 Apple 应用程序中使用的行为相同)。我创建了一个NSMenuItem具有等效键的CMD+F- 它调用以下函数,该函数应该是NSSearchField第一个响应者。

按下CMD+F时,它似乎在NSSearchField很短的时间内成为第一响应者(标题开始向左移动),但在焦点环出现之前它失去焦点(NSSearchField不拒绝第一响应者)。

我也尝试使用NSToolbarItem's menuFormRepresentation.view,结果相同。

我怎样才能NSToolbarItem成为第一响应者?任何帮助表示赞赏!

0 投票
1 回答
272 浏览

cocoa - 如何禁用 NSToolbar 的溢出菜单?

NSToolbar在 Interface Builder 中创建了一个包含一些项目的项目(并设置了它们的可见性优先级)。当我调整窗口大小时,项目会按照预期的优先级被删除,但是会出现一个带有空菜单的溢出按钮。我怎样才能阻止这种情况发生?

例子

0 投票
1 回答
292 浏览

appkit - 如何使用自定义视图创建 NSToolbarItem

你如何创建一个自定义的 NSToolbarItem,看起来就像 Safari 地址栏?

在此处输入图像描述

更具体地说,一种具有背景颜色、阴影和圆角的颜色。此外,它响应窗口的非活动阶段

在此处输入图像描述

以及支持 macOS Mojave 中的暗模式。

在此处输入图像描述

它是通过使用 NSBox 完成的吗?是否使用自定义 NSButton?只是为了澄清。我熟悉暗模式的复杂性,如何制作圆角,使用自定义视图创建 NSToolbarItem 等。

我正在寻找关于如何创建符合 AppKit 提供的原则的自定义 NSToolbarItem 的规范答案。

0 投票
1 回答
260 浏览

swift - 如何检测来自 NSWindowController 内的 NSToolbarItem 的点击?

我的 macOS 应用程序上有一个工具栏,是用 Swift 开发的。toolbarItem 可以拖到 NSWindowController 上,我可以设置一个 IABAction 函数,我现在在函数中有一个打印。当我点击按钮时没有任何反应,点击似乎没有被识别为一个动作?

我在函数中有几行代码,但删除了它,现在只有 print("test") 行。

没有观察到输出,所以当我单击此按钮时,我希望在控制台中获得“测试”。

这是与工具栏项关联的连接列表。

0 投票
1 回答
89 浏览

cocoa - macOS:NSButton 复选标记不会出现在 NSToolbar 中

我在 NSToolbarItem 中有一个 NSButton 作为我的 mac 应用程序中 NSToolbar 的成员。像这样的东西:

在此处输入图像描述

这两个复选标记处于打开状态,但它们不会出现。

如果我单击其中任何一个,它们会切换(代码运行)但复选标记永远不会出现。

这些在以前版本的 macOS 上工作,但不再在 mojave 上工作。无论如何,我正在将此代码编译为 10.12。

这是故事板结构:

在此处输入图像描述

有任何想法吗?