如何解决当活动 NSView 焦点改变时接收触发器
我很惊讶我无法通过搜索找到答案。因此,如果有描述如何执行此操作的页面,请告诉我,但我一直找不到。
我在 NSOutlineView
中有 3 个兄弟 NssplitView
,我为 NSOutlineViewSelectionDidChange
添加了观察者,当触发时更新 NSTextView
编辑器。我什至测试负行值以表明用户已取消选择该行并清除文本。
NSOutlineViews
连接到自定义数据源对象,NssplitView
由我的自定义 NSWindowController
创建,而 NSDocument
由我的自定义 NSDocumentController
和自定义 .nib
创建(我没有使用 NSOutlineView
s)
但是,我似乎无法收到 NSOutlineView
更改其活动状态的触发器,如果用户在不同的 mouseDown
中选择不同的行,它会起作用,因为 选择已更改 但如果他们单击不同视图的选定行,我不会收到任何事件或通知,说明任何内容已更改。在视觉上,我可以看到随着行选择突出显示颜色从彩色变为灰色的变化,在失去焦点的轮廓视图中以及在新激活的视图中选择行颜色从灰色变为彩色。
我尝试捕捉 NssplitView
事件,尝试成为第一响应者,尝试观察 NSObject
中的变化我一直在通过 NSOutlineView
的 NSResponder
层次结构到 - (BOOL)acceptsFirstResponder { return YES; }
- (BOOL)becomeFirstResponder {
NSLog(@"becomefirstResponder %@",self);
return YES;
}
寻找合适的通知或方法。我发现了有关焦点更改通知的弃用文档。我在谷歌中尝试了 nsview、nsnotification、nsoutlineview 和各种操作的组合,但找不到“这就是你这样做的方式”
编辑: 这是我添加到我的 NSOutlineView 子类(以及标题中的原型)以成为第一响应者的代码,但它从未被触发。
exists
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。