微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决当活动 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 举报,一经查实,本站将立刻删除。