OS X app焦点环不会改变

时间:2014-12-11 21:05:13

标签: objective-c cocoa xcode6

我的应用有7个按钮。当它启动其中一个(不是第一个)时,它周围会出现一个蓝色环。单击另一个按钮不会改变它。我没有看到属性检查器有任何区别。所有按钮的聚焦环都设置为默认值。

将对焦环设置为“无”'对于那个按钮给了我我想要的东西,但我不明白为什么这个按钮不同。

1 个答案:

答案 0 :(得分:2)

在“系统偏好设置”,“键盘”窗格,“快捷方式”标签中,有一对控制全键盘访问的单选按钮。您已选择"所有控件"。这允许按钮(以及其他内容)具有焦点。

当窗口首次放在屏幕上时,它会尝试将焦点放在将接受它的第一个控件上。 "首先"由密钥循环决定。在大多数情况下,应用程序并不打扰设置一个键循环,并且窗口被配置为自动计算它,它基于读取方向,或多或少(例如自上而下,从左到右为英语) 。所以,它已经选择了你的第一个按钮来关注。

正如Jesse Rusak在评论中所说,如果按Tab键,焦点将循环到下一个按钮,依此类推。

如果您希望其他控件具有初始焦点,则可以将窗口的initialFirstResponder插口连接到NIB中的该控件。或者您可以在显示之前以编程方式设置它(在某些时候after -awakeFromNib)。

您可以将按钮设置为不显示对焦环,但这并不能防止对焦。按空格键仍然会按下聚焦按钮,即使它没有显示聚焦环。按Tab键将循环到下一个按钮,因此您必须对所有这些按钮进行更改。

或者,您可以将按钮设置为拒绝第一响应者。但是,这可以防止需要/需要使用键盘的用户导航您的UI(不使用VoiceOver或其他辅助功能)。