代码之家  ›  专栏  ›  技术社区  ›  Kaatt

用NSPasteboard中的第二个最新项目替换最新项目

  •  0
  • Kaatt  · 技术社区  · 11 年前

    是否有方法从粘贴板中全局删除当前项目(按下时将显示的项目 命令+V 在任何应用程序中),并按 命令+V 粘贴上次复制的项目?

    说我复制 foo 然后 bar ,我按下应用程序中的按钮 酒吧 如果我按下 命令+V 我看到的任何地方 食品 粘贴和 酒吧 它已经从用户的机器上完全消失了。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Ken Thomases    11 年前

    不,你不能这样做。系统粘贴板没有任何“最近的粘贴板项目”机制。

    事实上,复制的数据甚至不一定出现在粘贴板上。应用程序可以通过在可用类型列表中放入一个类型,但不放入任何数据,来“承诺”粘贴板数据。对象被注册为该类型的“所有者”。如果其他应用程序请求该类型的数据,则要求所有者在当时提供该数据。这尤其适用于粘贴板数据制作、从源应用程序传输到粘贴板服务器和存储成本高昂的情况。

    所以,仅仅因为你在一个应用程序中复制了“foo”,这并不意味着“foo(foo)”曾经出现在粘贴板上。因此,没有办法回到粘贴板上的“foo”。

    此外,当其他东西清除了粘贴板以在其上放置新数据时,所有承诺数据的所有者都会得到通知,以便他们可以清理他们可能记录的任何状态,以实现该承诺。因此,即使是源应用程序,一旦“bar”被放在粘贴板上,也无法提供“foo”。