全局替换NSPasteboard.generalPasteboard()

时间:2015-02-28 14:09:18

标签: objective-c macos cocoa swift nspasteboard

我希望NSPasteboard.generalPasteboard()暂时切换到我的应用使用NSPasteboard.pasteboardWithUniqueName()生成的自定义

因此,当用户在切换粘贴板时按下Cmd + C / Cmd + V时,将使用我的应用程序的粘贴板而不是普通的粘贴板。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:1)

不,没有办法做到这一点。

如果您只想更改自己应用中的行为,可以向NSPasteboard添加类别/扩展名,以添加返回常规粘贴板或应用的私有粘贴板的方法。这至少将逻辑隔离到一个地方。在代码中的其他任何位置,您都会使用自定义方法而不是+generalPasteboard

如果您还想改变其他应用的行为,那么您运气不好。您尝试实现的更高级别目标是什么?为什么要更改哪些粘贴板应用程序使用?如果你解释一下,也许还有另一种方法来实现这个目标。

答案 1 :(得分:0)

是的,有可能这样做。您需要创建自己的单例,例如继承自UIPasteboard的customPasteboard,然后使用一般的Pasteboard可以返回自己的单例。 请记住,从iOS开始,然后将命名粘贴板的“ persist”属性设置为NO,这与常规粘贴板不同,它在每个会话中都保留在内存中。