确定所有控件是否可以获得焦点(即成为第一响应者)



我需要检测是否有任何NSControl(例如NSButton(可以使用 Tab 键获取焦点。

如果用户在"系统偏好设置"中的"键盘/快捷键"/"更改 Tab 移动焦点的方式"下启用了该选项,则可以。

更具体地说,我喜欢让 NSButton 成为第一响应者,但前提是启用了"所有控件都可以获得焦点"模式。也许我可以问控制器是否接受第一个回复器状态?

我尝试在按钮上调用acceptsFirstResponder,但即使它不能通过使用 Tab 键成为 firstReponder,也会返回 YES,所以这不是正确的方法。

canBecomeKeyView

您要查找的属性/方法。

来自 Cocoa 事件处理指南,键盘界面控制

acceptsFirstResponder 方法控制响应程序在其窗口要求时是否接受第一个响应程序状态(即,当调用 makeFirstResponder: 时,响应程序作为参数(。canBecomeKeyView 方法控制应用程序工具包是否允许按 Tab 键转到视图。它调用acceptsFirstResponder,但它也会在确定要返回的值之前检查其他信息,例如视图是否隐藏以及是否打开了完全键盘访问。

最新更新