当活动 NSView 焦点改变时接收触发器

问题描述

我很惊讶我无法通过搜索找到答案。因此,如果有描述如何执行此操作的页面,请告诉我,但我一直找不到。

我在 NSOutlineView 中有 3 个兄弟 NssplitView,我为 NSOutlineViewSelectionDidChange 添加了观察者,当触发时更新 NSTextView 编辑器。我什至测试负行值以表明用户已取消选择该行并清除文本。

NSOutlineViews 连接到自定义数据源对象,NssplitView 由我的自定义 NSWindowController 创建,而 NSDocument 由我的自定义 NSDocumentController自定义 .nib 创建(我没有使用 NSOutlineViews)

但是,我似乎无法收到 NSOutlineView 更改其活动状态的触发器,如果​​用户在不同的 mouseDown 中选择不同的行,它会起作用,因为 选择已更改 但如果他们单击不同视图的选定行,我不会收到任何事件或通知,说明任何内容已更改。在视觉上,我可以看到随着行选择突出显示颜色从彩色变为灰色的变化,在失去焦点的轮廓视图中以及在新激活的视图中选择行颜色从灰色变为彩色

我尝试捕捉 NssplitView 事件,尝试成为第一响应者,尝试观察 NSObject 中的变化我一直在通过 NSOutlineViewNSResponder 层次结构到 - (BOOL)acceptsFirstResponder { return YES; } - (BOOL)becomeFirstResponder { NSLog(@"becomefirstResponder %@",self); return YES; } 寻找合适的通知方法。我发现了有关焦点更改通知的弃用文档。我在谷歌中尝试了 nsview、nsnotification、nsoutlineview 和各种操作的组合,但找不到“这就是你这样做的方式”

编辑: 这是我添加到我的 NSOutlineView 子类(以及标题中的原型)以成为第一响应者的代码,但它从未被触发。

exists

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...