确定是不是所有控件都可以获得焦点(即成为第一响应者)
Posted
技术标签:
【中文标题】确定是不是所有控件都可以获得焦点(即成为第一响应者)【英文标题】:Determine whether all controls can get focus (i.e. become first responder)确定是否所有控件都可以获得焦点(即成为第一响应者) 【发布时间】:2019-06-02 17:54:23 【问题描述】:我需要检测是否有任何NSControl
,例如NSButton
,可以使用Tab 键获得焦点。
如果用户在系统偏好设置中启用了键盘/快捷方式/键盘/“更改选项卡移动焦点的方式”下的选项,则可以。
更具体地说,我喜欢让 NSButton 成为第一响应者,但前提是启用了“所有控件都可以获得焦点”模式。也许我可以询问控件是否接受 firstReponder 状态?
我尝试在按钮上调用 acceptsFirstResponder
,但即使使用 Tab 键无法成为 firstReponder 也会返回 YES,所以这不是正确的方法。
【问题讨论】:
【参考方案1】:canBecomeKeyView
是您要查找的属性/方法。
来自Cocoa Event Handling Guide, Keyboard Interface Control
acceptsFirstResponder 方法控制响应者在其窗口请求时是否接受第一响应者状态(即当 makeFirstResponder: 以响应者作为参数调用时)。 canBecomeKeyView 方法控制应用程序工具包是否允许通过选项卡进入视图。它调用acceptsFirstResponder,但它还在确定要返回的值之前检查其他信息,例如视图是否隐藏以及是否开启了全键盘访问。
【讨论】:
以上是关于确定是不是所有控件都可以获得焦点(即成为第一响应者)的主要内容,如果未能解决你的问题,请参考以下文章
Android中ListView的Item的子控件获取焦点问题