在我的Cocoa应用程序中的应用程序菜单上有一个菜单项“删除”,它发送一个delete:
消息给第一响应者。现在,我的键盘集中在NSOutlineView
,这是本例中的第一个响应者。短的子类NSOutlineView
,有没有办法处理传递给它的delete:
消息? NSOutlineViewDelegate
和NSOutlineViewDataSource
协议似乎都没有为处理这些操作定义任何有趣的事情。是否有NSResponder委托这样的事情?
回答
第一响应者正是这样的:第一个响应者。它会将任何不感兴趣的东西转发给其响应者,并且可能会依次转发,直到消息到达应用程序对象。
因此,您只需在响应者链中处理此消息即可。窗口控制器是一个很好的方法来做到这一点;它将成为窗口的下一个响应者。
从体系结构的角度来看,让窗口控制器处理表格/大纲视图本地的“复制”,“粘贴”和“删除”事件似乎并不麻烦?看来这些方法最好由视图绑定的数组/树控制器或视图的委托处理,但NSArrayController和NSTreeController不是NSResponders并且不能位于响应者链中,有什么建议? – Tony 2011-12-26 20:54:21
您始终可以使用自定义的“NSViewController”对象来管理每个单独的视图,并在响应者链中插入视图控制器。然后视图控制器可以处理复制和粘贴等。 – 2011-12-26 23:29:49
@Tony:如果窗口控制器是或知道拥有数据的对象(如文档),则不需要。窗口控制器几乎存在于视图和窗口与模型控制器之间的中间。如果视图处理剪切,复制,粘贴和删除(通过绑定或数据源消息),那么最好是这样,但除非您想创建一个添加该视图的子类,否则它不会。 – 2011-12-26 23:36:02
- 1. 什么是做这样的事情委托组播在F#
- 2. 是否有像scrollviewDidScroll这样的uipickerview委托方法?
- 3. 是否有像“willShowWindow”这样的NSWindow通知/委托方法?
- 4. c#是否可以创建一个这样的委托?
- 5. 是否有这样的事情了模板化的case语句
- 6. SQL Server依赖的标识 - 是否有这样的事情?
- 7. 数组/对象混合是否有这样的事情?
- 8. 是否有可能做出这样的事情?
- 9. 是否有短路倍增这样的事情?
- 10. 是否有内联bash脚本这样的事情?
- 11. 重置异常,是否有这样的事情?
- 12. jQuery选择器:this.parent,是否有这样的事情?
- 13. 有没有.herokuignore这样的事情?
- 14. 有没有Server.FileNameEncode这样的事情?
- 15. 可能在这种情况下使用事件委托?
- 16. 委托事件
- 17. 如何知道UIWebView是否有委托
- 18. 是否有可能不`presentViewController`委托
- 19. ActionScript 3是否有某种事件委托系统?
- 20. IQueryable.First是否接受委托?
- 21. 在这种情况下使用委托是明智的吗?
- 22. 有没有更好的方法?委托 - >委托 - >委托
- 23. Eclipse项目描述 - 不是.project文件 - 是否有这样的事情?
- 24. Javascript - 这些功能是否做同样的事情?
- 25. 是否存在xsl:fo reporting或xsl:fo仿真这样的事情?
- 26. 这两个node.js模块是否做同样的事情?
- 27. Docusign发件人组是否存在这样的事情?
- 28. Analysis Services中是否存在“常量”这样的事情?
- 29. C#中是否存在“Javascript上下文”这样的事情?
- 30. Bootstrap!是否存在隐藏sm这样的事情
您对子类别有什么异议?这很简单,将实现你想要的。 – 2011-12-26 23:30:56
它当然可以达到结果,但是处理这些胶水元素似乎是控制器而不是视图的角色。此外,由于Cocoa严重提倡委托模式,我认为可能有一些内置委托来处理这些任务。 – Tony 2011-12-26 23:34:44