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

将该按钮的对焦环设置为“ None”(无)可提供我想要的功能,但我不明白为什么这个按钮与众不同。

最佳答案

在“系统偏好设置”,“键盘”窗格的“快捷方式”选项卡中,有一对单选按钮控制“完全键盘访问”。您选择了“所有控件”。这使按钮(以及其他功能)具有焦点。

第一次在屏幕上放置窗口时,它将尝试将焦点放在将接受该窗口的第一个控件上。 “第一”由密钥循环确定。在大多数情况下,应用无需理会设置按键循环,而是将窗口配置为自动计算它,它或多或少地根据阅读方向(例如,自上而下,英语从左到右)进行计算。因此,它选择了第一个按钮以使其成为焦点。

正如杰西·鲁萨克(Jesse Rusak)在其评论中建议的那样,如果您按Tab键,焦点将循环到下一个按钮,依此类推。

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

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

或者,您可以将按钮设置为拒绝第一响应者。但是,这会阻止想要/需要使用键盘来导航UI的人这样做(缺少使用VoiceOver或其他辅助功能)。

关于objective-c - OS X应用程序聚焦环不变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27432329/

10-09 01:48