为什么Xcode的搜索导航器会从Safari中搜索?

时间:2013-08-10 01:48:26

标签: xcode macos search-engine nspasteboard

我经常在Xcode中处理项目时打开Safari,在Stack Overflow等上查找内容。有几次,我在Safari的网址/搜索引擎领域搜索了一些内容,并从我输入的内容中搜索了一两个字,它将被输入到Xcode的搜索导航器中,即使我没有&# 39;在那里打字。它并不是每次都这样做。

编辑:通过搜索导航器输入的文本也可以在Safari中弹出。

这不会引起任何问题,但它所选择的词语似乎没有任何关联性,我很好奇为什么会发生这种奇怪的现象。

我正在运行Xcode 4.6.3,Safari 6.0.3和Mac OS X 10.8.4

这是一个小故障吗?一个半生不熟的功能?

1 个答案:

答案 0 :(得分:1)

您所看到的是OS X Global Find Pasteboard的实际应用。调用私有类NSFindPanel的任何地方(通常与文本字段一起)将调用此全局粘贴板,并为包含最新查询的“查找”元数据提供单个中心位置:

  

除了通过查找粘贴板传递搜索字符串外,NSTextView的标准“查找”面板还会传达搜索选项元数据,包括区分大小写和子字符串匹配选项。此元数据作为全局查找粘贴板上的NSFindPanelSearchOptionsPboardType值存储在属性列表中。因此,第三方应用程序可以在此属性列表中存储其他键,以根据需要传递其他元数据,以支持许多第三方应用程序的“查找”面板常见的各种搜索选项。

来自Section "Find Panel Search Metadata" in the NSTextField documentation on developer.apple.com

我相信设计意图是,如果您在一个应用中执行搜索,您将在另一个应用中进行相同搜索的可能性相当高,因此全局查找粘贴板充当同步在不同的应用程序上查找字段之间的机制。对于那些来自其他操作系统的人来说,这似乎是一种非常奇怪的行为,其中应用程序的查找功能非常沙箱化到他们自己的进程 - 最近的搜索术语是特定于应用程序的搜索术语,而不是这个全局共享空间。

就复制而言,您始终可以通过将文本复制到剪贴板,然后将其粘贴到“查找”字段中来触发报告的行为。当您从应用程序切换到应用程序时,全局查找粘贴板将更新查找NSFindPanel。这就是为什么你看到它在Xcode和Safari之间双向流动 - 因为两者都使用NSFindPanel,它们都引用全局查找粘贴板并在下次聚焦时同步。

不幸的是,这不是用户可配置的设置;所有NSFindPanel都有此行为,并且您没有可以设置的系统首选项或默认首选项来更改行为。考虑在bugreport.apple.com上向Apple提交一个问题