默认情况下,当应用程序启动时,如何阻止我的NS按钮被选中?

时间:2011-04-26 07:50:35

标签: cocoa macos nsbutton

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

示例:

A window with two buttons. The first (left) has a blue glow around it, and the second (right) does not.

3 个答案:

答案 0 :(得分:7)

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

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

[myButton setFocusRingType:NSFocusRingTypeNone];

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

答案 1 :(得分:4)

首先,您应该知道,默认情况下,按钮无法获得焦点。用户必须选择系统偏好设置>键盘>快捷方式>全键盘访问:所有控件。如果他们已经完成了这项工作,他们可能想要按钮以便最初获得焦点。

无论如何,正确的方法是在第一次显示之后的某个时间调用{{1}}。何时执行此操作取决于窗口的确切显示方式。如果您在代码中明确显示它,那么您可以在此之后进行调用。如果因为在其NIB中设置了Visible at Launch标志而显示,则在加载NIB后执行此操作。等

答案 2 :(得分:2)

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

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

我建议不要使用-[NSWindow makeFirstResponder:nil]。窗口将从未选择任何内容开始,但只要用户点击选项卡,该按钮就会被选中。这对于Mac应用程序来说是不常见的,因为没有办法让窗口重新进入"没有选择"以用户身份说明。