【发布时间】:2017-05-15 18:25:05
【问题描述】:
我有一个自定义的NSTextField,我需要知道在controlTextDidEndEditing 被触发时/之后哪个控件是“活动的”。调用 controlTextDidEndEditing 时,窗口的 FirstResponder 还在 TextField 上。
【问题讨论】:
-
您想知道结束编辑的控件还是接下来将变为活动的控件?下一个控件取决于事件(tab、shift-tab、enter、mousedown、箭头)、用户首选项(全键盘访问)和其他条件。
-
下一个,正如我所说,它是一个自定义控件,它将在多个窗口中实现……我想保持它的通用性。我只需要确保新的第一响应者不是某个控件
-
这是一个不同的问题。你想禁用这个特定的控件吗?也许你应该解释一下你想要完成什么。
-
我尝试创建一个自定义组合框,因为 NSComboBox 非常有限,我需要某些功能。所以我有一个 NSTextField 和一个 NSTableView(在 NSScrollView 内)。在 controlTextDidEndEditing 我尝试关闭 tableView(如果打开)......这工作正常,除了在 TableView 中完成某些事情的情况。因此,在 TextField 不再是 FirstResponder 之后,我需要检查什么是 firstResponder 控件。
-
我目前所做的是我有一个 iVar
lostFocus始终是true除了调用 TableView 的 didChangeSelection 的 action/doubleAction-Selector 的情况,然后它被设置为假。在controlTextDidEndEditing我检查lostFocus如果它是真的,那么tableView 将被关闭,否则它保持打开状态。
标签: macos cocoa nstextfield first-responder