【问题标题】:how to catch when the NSTextView in a NSComboBox gets first responder status如何捕捉 NSComboBox 中的 NSTextView 何时获得第一响应者状态
【发布时间】:2012-05-23 15:43:00
【问题描述】:
当 NSComboBox 失去第一响应者状态并因此得到“resignFirstResponder”时,我尝试进行一些处理,但是我的处理应该只在组合框真正失去第一响应者状态时发生,而不是在内部 NSTextView 用于实现文本时组合框本身获得第一响应者状态。
是否有官方方法可以检测到第一响应者状态从 NSComboBox 转到其内部 NSTextView?
我可以获得指向该 NSTextView 的指针吗?也许设置它的委托?
问候
【问题讨论】:
标签:
cocoa
nstextview
first-responder
nscombobox
【解决方案1】:
其实并没有“内部 NSTextView”,每个 NSWindow 都有一个这样的 NSTextView,它可以随意重新分配给需要它的编辑控件(文本、组合框),这就是所谓的“字段编辑器”。有可能在 NSWindow 委托中使用windowWillReturnFieldEditor 覆盖它。
实际的答案是我们可以在组合上检测到becomeFirstResponder,然后检测到textDidEndEditing。
参考:Apple 开发者文档中“文本编辑编程指南”中的“使用字段编辑器”。