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

问题描述 投票:7回答:3

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

例:

cocoa macos nsbutton
3个回答
7
投票

Caveat: This answer is incomplete: It just hides the focus ring (without preventing the selection). There's little benefit in this solution.

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

[myButton setFocusRingType:NSFocusRingTypeNone];

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


4
投票

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

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


2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.