objective-c - OS X 应用程序对焦环没有变化

标签 objective-c cocoa xcode6

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

将该按钮的聚焦环设置为“无”可以满足我的需求,但我不明白为什么这个按钮有所不同。

最佳答案

在系统偏好设置、键盘 Pane 、快捷方式选项卡中,有一对单选按钮控制完全键盘访问。您已选择“所有控件”。这允许按钮(除其他外)获得焦点。

当窗口首次放置在屏幕上时,它将尝试将焦点放在第一个接受它的控件上。 “第一”是由按键循环决定的。在大多数情况下,应用程序不会费心设置按键循环,并且窗口被配置为自动计算它,它或多或少地基于阅读方向(例如,英语从上到下、从左到右)。因此,它选择了您的第一个按钮来给予焦点。

正如 Jesse Rusak 在评论中建议的那样,如果按 Tab,焦点将循环到下一个按钮,依此类推。

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

您可以将按钮设置为不显示聚焦环,但这并不妨碍它们聚焦。按空格键仍会按下聚焦按钮,即使它没有显示聚焦环。按 T​​ab 键将循环到下一个按钮,因此您必须对所有按钮进行更改。

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

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

相关文章:

ios - Xcode Save for Development 部署选项缺失

ios - 如何在锁定屏幕上显示与左下角相机相同的 iphone 应用程序图标

ios - 插入行时 UITableView 抖动

ios - 如何在 iOS 7 中执行动态/计算属性

cocoa - 无需 CoreData 即可管理逆向关系

cocoa - 每次更改 Core Data MO 中的另一个属性时重新计算属性

iphone - 圆弧 "It is not safe to remove an unused autorelease message"

swift - NSPersistentDocument:浏览版本:尝试添加只读文件

ios - 有没有一种方法可以拖动 Segues 来使 Storyboard 看起来更漂亮?

ios - Xcode 6 企业版不工作