如何在 MacRuby 中读取全局 UI 选择?例如,预览中的选定文本。
由于没有 Ruby 和 Cocoa 方面的经验,我决定冒险编写一个小型词典应用程序来帮助自己进行翻译。所有的东西都准备好了,我只需要知道如何阅读热键上的选定文本。
如何在 MacRuby 中读取全局 UI 选择?例如,预览中的选定文本。
由于没有 Ruby 和 Cocoa 方面的经验,我决定冒险编写一个小型词典应用程序来帮助自己进行翻译。所有的东西都准备好了,我只需要知道如何阅读热键上的选定文本。
你不能,因为没有。
没有一种全局选择。每个文本视图(或其他包含可选文本的视图)有一个文本选择。一个窗口可以有任意数量的这样的视图,一个应用程序可以有任意数量的这样的窗口打开,并且用户可以有任意数量的这样的应用程序正在运行。
另一个问题是并非所有应用程序都是 Cocoa。其中,大多数是可访问的,但不是全部;自定义视图可能会让您感到困惑(例如,想想图形编辑器中的文本工具)。如果用户在非 Cocoa 应用程序中选择文本,您可能无法阅读它。
如果您想在焦点应用程序的焦点窗口中访问焦点视图中的选定文本,最好的方法是让您的应用程序提供一个Service,用户可以从几乎任何 Cocoa 应用程序和一些更开明的碳应用程序。这是你能做的最好的。
Apple 自己的 Dictionary 在 AppKit 中得到了特殊处理(包括在 Cocoa 和 Carbon 应用程序中提供浮动字典面板),但在其他方面工作方式相同:它提供显示在每个服务菜单中的服务(如果用户没有打开它关了)。