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

Ale*_*der 7 macos cocoa nsbutton

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

例:

一个带两个按钮的窗口. 第一个(左)在它周围有蓝色光晕,第二个(右)没有.

Nik*_*uhe 7

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

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

[myButton setFocusRingType:NSFocusRingTypeNone];
Run Code Online (Sandbox Code Playgroud)

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

  • 这似乎是一个糟糕的解决方案.现在,用户可以使用Tab进行导航,但只有第二个按钮会在聚焦时突出显示,但第一个按钮将聚焦而不会突出显示. (3认同)
  • 这应该是不可接受的.这只是让用户无法告诉按钮被选中.这并不会阻止按钮被选中. (2认同)

Ken*_*ses 5

首先,您应该知道,默认情况下,按钮无法获得焦点。用户必须选择“系统首选项”>“键盘”>“快捷方式”>“完整键盘访问:所有控件”。如果他们这样做了,他们可能需要一个按钮来最初获得焦点。

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