8

我创建了一个按钮,但有个小问题:当我的应用启动时,按钮被选中。如何禁用此选择?

例子:

一个带有两个按钮的窗口。 第一个(左)周围有蓝光,第二个(右)没有。

4

3 回答 3

7

警告:这个答案是不完整的:它只是隐藏了对焦环(不阻止选择)。这个解决方案没有什么好处。

将按钮的对焦环类型设置为无:

[myButton setFocusRingType:NSFocusRingTypeNone];

您也可以在 XIB 中设置此选项。

于 2011-04-26T08:08:18.803 回答
4

首先,您应该知道,默认情况下,按钮无法获得焦点。用户必须选择“系统偏好设置”>“键盘”>“快捷方式”>“全键盘访问:所有控件”。如果他们这样做了,他们可能希望按钮最初具有焦点。

无论如何,这样做的正确方法是[theWindow makeFirstResponder:nil]在第一次显示后的某个时间调用。何时执行此操作取决于窗口的显示方式。如果您在代码中明确显示它,那么您可以在此之后进行调用。如果显示它是因为它的 Visible at Launch 标志在其 NIB 中设置,那么您将在加载 NIB 后执行此操作。等等。

于 2016-08-22T23:09:01.747 回答
2

如果可以的话,某些东西应该始终是窗口中的第一响应者。通常,只有少数控件(如文本字段)可以成为第一响应者,但是当用户启用全键盘访问时,默认选择按钮是正常的。

如果您不希望开始选择此特定按钮,请将窗口设置initialFirstResponder为另一个控件。

我建议不要使用-[NSWindow makeFirstResponder:nil]. 该窗口将从没有选择任何内容开始,但一旦用户点击选项卡,按钮就会被选中。这对于 Mac 应用程序来说是不寻常的,因为作为用户,没有办法让窗口回到“未选择”状态。

于 2016-10-21T13:17:41.997 回答