Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 检查NSPasteBoard上当前复制的数据类型_Objective C_Macos_Copy_Copy Paste_Nspasteboard - Fatal编程技术网

Objective c 检查NSPasteBoard上当前复制的数据类型

Objective c 检查NSPasteBoard上当前复制的数据类型,objective-c,macos,copy,copy-paste,nspasteboard,Objective C,Macos,Copy,Copy Paste,Nspasteboard,我正在开发一个应用程序,在这个应用程序中,我需要能够知道复制到NSPasteBoard上的数据类型。从文档中我知道,当我们复制文件的任何内容时,NSPasteBoard会将该内容传递到pasteboard服务器,系统上的任何应用程序都可以从该服务器访问该数据 现在,我想轮询粘贴板服务器并确定用户是否刚刚复制了一些文本内容,如果是文本内容,则应用程序将处理这些数据,否则将忽略其他数据,如图片、文件夹等 苹果文档的发现 从文档中我发现,当我们在粘贴板上设置数据时,我们可以。但如果我们在系统上复制一些

我正在开发一个应用程序,在这个应用程序中,我需要能够知道复制到NSPasteBoard上的数据类型。从文档中我知道,当我们复制文件的任何内容时,NSPasteBoard会将该内容传递到pasteboard服务器,系统上的任何应用程序都可以从该服务器访问该数据

现在,我想轮询粘贴板服务器并确定用户是否刚刚复制了一些文本内容,如果是文本内容,则应用程序将处理这些数据,否则将忽略其他数据,如图片、文件夹等

苹果文档的发现 从文档中我发现,当我们在粘贴板上设置数据时,我们可以。但如果我们在系统上复制一些文本内容,我不能100%确定要设置什么类型的数据类型。setData方法中数据类型的参数为NSString


任何进一步的指导都将非常有用。

将文本复制到粘贴板的设计良好的应用程序应使用文档中列出的标准类型之一:

因此,您只需检查粘贴板上是否存在一些标准文本类型,如NSPasteboardTypeString或NSPasteboardTypeRTF,并使用-[NSPasteboard availableTypeFromArray:]

应用程序可能会以多种不同的形式将数据放入粘贴板中。例如,如果您在Safari中复制文本,您将同时获得纯文本和富文本表示。这是一种支持各种应用程序的好方法;如果一个应用程序不能粘贴富文本,也许它可以粘贴纯文本,所以Safari会同时复制这两种文本

但是,从您对问题的描述来看,应用程序将多个类型复制到粘贴板的事实可能会使确定是否只复制了文本变得更具挑战性。例如,在Safari中复制图像会将图像数据复制到NSPasteboardTypeTIFF中,但也会将URL复制到NSPasteboardTypeString中。因此,完全取决于您想要完成的任务,除了文本类型的存在外,您可能还需要检查是否缺少某些类型,如NSPasteboardTypeTIFF,以确定是否复制了有用的文本


探索粘贴板上所有数据的一个好方法是使用Apple的ClipboardViewer示例代码:

将文本复制到粘贴板的设计良好的应用程序应使用文档中列出的标准类型之一:

因此,您只需检查粘贴板上是否存在一些标准文本类型,如NSPasteboardTypeString或NSPasteboardTypeRTF,并使用-[NSPasteboard availableTypeFromArray:]

应用程序可能会以多种不同的形式将数据放入粘贴板中。例如,如果您在Safari中复制文本,您将同时获得纯文本和富文本表示。这是一种支持各种应用程序的好方法;如果一个应用程序不能粘贴富文本,也许它可以粘贴纯文本,所以Safari会同时复制这两种文本

但是,从您对问题的描述来看,应用程序将多个类型复制到粘贴板的事实可能会使确定是否只复制了文本变得更具挑战性。例如,在Safari中复制图像会将图像数据复制到NSPasteboardTypeTIFF中,但也会将URL复制到NSPasteboardTypeString中。因此,完全取决于您想要完成的任务,除了文本类型的存在外,您可能还需要检查是否缺少某些类型,如NSPasteboardTypeTIFF,以确定是否复制了有用的文本

探索粘贴板上所有数据的一个好方法是使用Apple的ClipboardViewer示例代码: