objective-c - 编辑 NSOutlineView 项目后使用委托(delegate)

标签 objective-c cocoa nsoutlineview

我的设置是

我有一个 nib 文件,其中包含一个 NSpanel 和一个 NSOutlineView。

大纲 View 是通过绑定(bind)和 NSTreeController 填充的,我有 NSOutlineView 子类,其中有一些委托(delegate)和拖放方法。

我的问题

我正在尝试实现委托(delegate)方法

- (void)textDidEndEditing:(NSNotification *)aNotification

我可以编辑 NSOutlineview 中的任何项目,一旦我点击“返回”,就会调用委托(delegate)方法,但是窗口不再事件。并且该项目处于“编辑模式”,我必须单击已编辑项目上方或下方的项目才能终止编辑模式。我添加了几张图片来说明

目前,除了 NSlog 之外,我在文本编辑中没有任何内容来查看它是否被调用。如果我删除它按预期执行的方法,则编辑完成,窗口仍处于事件状态。

编辑项目

Editing item

一旦我点击“返回”,窗口就会失去焦点,并且项目仍处于编辑模式。

Hit enter

最佳答案

如果覆盖 NSOutlineView 的 textDidEndEditing: 会更改 tableview 的行为,请尝试添加对 -[super textDidEndEditing:] 的调用。

这里发生的事情是 NSOutlineView (或其父类(super class)之一)正在 textDidEndEditing: 中执行一些重要的操作,并通过在子类中重写该方法,父类的方法永远不会被调用。

关于objective-c - 编辑 NSOutlineView 项目后使用委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206472/

相关文章:

iphone - 如何使用 ASIHTTPRequest (ASYNC) 跟踪下载进度

objective-c - iCarousel in swift version 1.2 报错(candidate is not Objc but protocol requires it)

cocoa - 核心动画...循环动画?

swift - URL 方案不适用于 macOS

objective-c - NSImageCell:设置工具提示

objective-c - ARC 会告诉我什么时候必须使用 __block 吗?

objective-c - 我在我的 Objective-C 项目中添加了一些 swift 文件,在 swift 文件中定义了一个全局常量。如何在 OC 文件中使用这个全局常量?

Cocoa 菜单栏以编程方式使用 NSMenu,如何获取标准项目 "Services"、 "Hide App"、 "Hide Others"、 "Show All"等

objective-c - NSOutlineView 组间距

cocoa - 展开从数据源加载数据的 NSOutlineView 的所有项目