问题标签 [nscontrol]

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 投票
0 回答
110 浏览

objective-c - 鼠标按下时多个 NSbutton 跟踪悬停

我想在 Xcodes Utilities 侧面板中创建类似的按钮行(见图)。

XcodeUtilitiesButtons

我很容易在彼此旁边添加四个图像按钮。但是,有一个功能我还没有解决。

如果您按住其中一个按钮,您可以在任何按钮之间悬停(同时按住鼠标),然后如果鼠标悬停在每个按钮上,则会显示每个按钮的交替图像,当您松开该按钮时选择。

我还没有找到任何提供这个的默认元素,所以我一直在修补不同的解决方案。

我需要继承NSButton来捕获-mouseDown事件并创建我自己的事件跟踪循环,这很清楚。从那我应该能够检查鼠标指向的位置(按下按钮时),只需调用它指向的按钮并将其设置为显示的备用图像。

我的想法是创建一个NSView来保存按钮,以便它可以处理鼠标点的检查,然后调用所有按钮。

但是通过这种方法,我被困在试图在视图中找到按钮的位置。我已经向按钮添加了一个IBOutlet,如果我从我的视图中调用按钮-frame我总是得到 0 结果:

我已经尝试了我能想到的convertRect:toViewconvertRect:fromView的所有变体,但没有任何结果。(因为我没有从按钮的-frame调用中得到有效的输出)。

所以,我有两个问题:

  1. 这是一种有效的方法吗?如果不是,什么是更好的解决方案?

  2. 如何在自定义视图(Buttons superview)中获取按钮的位置,以了解鼠标是否悬停在按钮上。

我目前正在这样做(使用 BOOL isInsideButton 检查不起作用。

0 投票
2 回答
1745 浏览

swift - 检测何时在控件上按下删除键

如何子类化一个NSControl对象(例如 a NSImageView)以检测删除键的按下?具体来说,我想从 a 中清除图像NSImageView,但可能有更广泛的应用。

0 投票
0 回答
218 浏览

cocoa - NSPopupButton 颜色很好

Xcode 细节面板中的一些颜色选择按钮是一个带有颜色池的 NSPopupButton。它看起来像一个分段控制/弹出按钮。

将标准颜色井和标准弹出按钮放在一起并没有相同的外观。此外,在这种情况下,菜单不会很好地覆盖颜色。弹出图像(两个三角形)也不容易用于自定义控件。

以前有人尝试过类似的控制吗?关于如何制作的任何提示?

0 投票
1 回答
1136 浏览

cocoa - Cocoa - 不调用 NSSearchFieldDelegate 方法

从 NSVIewConroller 来看,我有简单的 NSSearchField。并将 NSSearchFIeld 的委托连接到视图控制器。我已经实现了 NSSearcHFieldDelegate 方法,如下所示:

在开始编辑和结束编辑时不会调用这些方法。但是,如果我实现 NSControl 默认委托,例如controlTextDidChange:control:textShouldBeginEditing:在各自的事件上被调用。

为什么不调用 NSSearchFieldDelegate 方法?..

0 投票
1 回答
270 浏览

objective-c - NSSegmentedControl 以蓝色调和单选突出显示

是否有记录的方式NSSegmentedControl来使用 trackingMode NSSegmentSwitchTrackingSelectOne(即在控件中专门选择一个段)并使用蓝色色调突出显示模式渲染它- 我们在使用时自动获得的那个NSSegmentSwitchTrackingSelectAny

我正在寻找的是一种类似于Xcode 工具栏Navigator子工具栏/切换器中的风格:

在此处输入图像描述

到目前为止,使用不同样式或在标题周围戳的尝试都没有发现任何东西 -
分段控件以深灰色突出显示(类似于在 Finder 窗口中观察到的)。

任何有关如何激活蓝色突出显示模式的提示都非常感谢。

0 投票
1 回答
62 浏览

macos - NSImageView,用 CMD/CTR+C 复制图片

如果 NSImageView 是可编辑的并且包含图像,则可以通过 CMD+C 复制其内容

在我的子类中,我不希望 Editable 属性为 YES(因为剪切、丢弃等...)我只想支持副本,但无法弄清楚是什么让副本起作用

在我的子类中,我尝试了

但是菜单中的复制命令显示为灰色,并且 CMD+C 也不起作用(它会触发菜单copy:

如何添加对复制 NSImageView 子类的支持,即 Editable=NO

0 投票
1 回答
568 浏览

swift - 子类化 NSControl,在 Swift 中不调用 IBAction

我对 NSSlider 进行了子类化,无论是否按下选项键,该 NSSlider 的行为都会有所不同。为了做到这一点,我覆盖了 mouseDown 函数。它似乎完成了这项工作。问题是,我注意到我的 ViewController 中连接的 @IBAction 仅在未按下选项键时触发(即当 mouseDown 方法传递给 super 时)。为了允许@IBAction 执行,我缺少什么?

非常感谢除了这个问题,欢迎对代码提出改进建议...... :-)

乔什

0 投票
1 回答
493 浏览

swift - 如何快速捕捉 NSControl 上的一些事件

我正在用 Swift 为 OSX 编写一个应用程序,我正在寻找一种在 NSControl 上捕获事件的好方法。显然,我搜索过,但我发现的信息往往不清楚或陈旧。就我而言,我想在 NSTextField 上捕获几个事件(键向上、文本更改、焦点丢失……)。

当我在 NSTextField 中按下“Enter”时,它会发送一个动作。当我在 NSTextField 中单击或写入时,也许有办法发送动作?

0 投票
1 回答
164 浏览

swift - NSButton 值为 1

我想使用 NSButton 的 integerValue 在方法中传递信息,但遇到了一个奇怪的错误:无论我设置的值是 integerValue、stringValue 还是 floatValue,当我读出它时,它都是 1。

NSButton 继承自 NSControl 并且应该具有通常的值集......但所有这些值,包括字符串,都解析为 1。

我在 NSControl.h 或 NSButton.h 中看不到任何东西表明 xxValue 不是普通属性。

我正在使用 Xcode 9/Swift 4/macOS 10.12.6 - 这是一个已知问题吗?这在任何地方都有记录吗?我使用 .tag 作为解决方法,但不希望这样做。

0 投票
1 回答
226 浏览

objective-c - Layer-Backed NSControl 仍然调用 NSCell 绘图例程

语境:

Apple 在 macOS 上“软弃用”了 NSCell。我试图在我的自定义 NSControl 子类中减少它的使用,而是使用 CALayers 来处理我的绘图。为此,我让我的 NSButton 子类支持图层:

然后我尝试使用“updateLayer”路径而不是“drawRect”来处理我的绘图:


问题:

如果我使用-updateLayer,则 NSCell 仍会接收绘图命令并绘制其标题,从而在我的控件中产生一个“模糊”的标题字符串,因为该字符串被绘制了两次——一次在我的 textLayer 中,一次在 Cell 中。

-drawRect:但是,如果我在而不是 中执行与上述完全相同的工作-updateLayer,则单元格不会进行任何绘图(因为我没有使用 调用它[self.cell drawInteriorWithFrame:ControlView:]

在我的一生中,我无法弄清楚当关联的 controlView(我的按钮子类)选择加入-updateLayer而不是-drawRect:.

我查看了 NSControl.h 和 NSView.h 上的所有方法。我已经覆盖了所有-updateCell相关的方法。这些都不是罪魁祸首。我不能简单地设置self.cell=nil,因为 NSControl 仍然依赖 NSCell 进行事件处理等。

-updateLayer有人可以告诉我如何在其关联的 controlView 使用而不是NSCell 时阻止其绘制-drawRect:吗?