objective-c - 如何获取粘贴板条目的类型?

标签 objective-c cocoa

我有一个 NSPasteboard:

NSPasteboard *pasteboard;

并通过以下方式获取它:

pasteboard = [[NSPasteboard generalPasteboard] retain];

现在我想确定最后一个条目是什么类型,例如格式化文本或图像等,如果是文本,则获取其内容等。

如何找出粘贴板中数据保存的类型?

我记录了[粘贴板类型]的输出:

2011-05-07 20:13:30.491 YourApp[15335:903] Pasteboard changed: (
    "public.utf8-plain-text",
    NSStringPboardType,
    "dyn.ah62d4rv4gu8y63n2nuuhg5pbsm4ca6dbsr4gnkduqf31k3pcr7u1e3basv61a3k",
    "NeXT smart paste pasteboard type"
)

但我不知道如何检查它是文本还是其他内容......

最佳答案

Pasteboard Programming Guide 中对此进行了全面介绍。 。执行此操作的标准方法是列出您感兴趣的类型,然后要求粘贴板为您提供这些类型。如果它有这些类型的对象,你就会得到它们。否则,你什么也得不到。

NSPasteboard * pboard = [NSPasteboard generalPasteboard]; 
NSArray * interestingTypes;
interestingTypes = [NSArray arrayWithObjects:[NSAttributedString class], 
                                             [NSString class], nil];
NSArray * pboardContents = [pboard readObjectsForClasses:interestingTypes
                                                 options:nil];
if( pboardContents ) {
    // Use the contents
}

您还可以使用不同的类型列表进行多次查询:

NSArray * imgType = [NSArray arrayWithObject:[NSImage class]];
NSArray * strType = [NSArray arrayWithObject:[NSString class]];

NSArray * pboardImg = [pboard readObjectsForClasses:imgType
                                             options:nil];
NSArray * pboardStr = [pboard readObjectsForClasses:strType
                                             options:nil];

if( pboardImg ){
    // Got an image!
}

if( pboardStr ){
   // Got a string!
}

您也可以简单地询问粘贴板是否它具有您感兴趣的类型之一,而无需实际获取对象。这将为您提供一个简单的 YESNO:

[pboard canReadObjectForClasses:interestingTypes
                        options:nil];

请注意,Snow Leopard 中的粘贴板处理方式发生了变化,因此不幸的是,Leopard 中的情况完全不同。

关于objective-c - 如何获取粘贴板条目的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923138/

相关文章:

iOS:画外音无法正确读取 ".03 hours"文本

ios - 通过 WebRTC 将屏幕截图作为来自 iOS 的视频流进行流式传输

iphone - 如何检测 View 中任意位置的点击?

ios Stripe支付(账户到账户转账)

objective-c - 设置 PopUpButton 的操作

objective-c - 在 Swift 中为 NSOutputStream 设置 TCP_NODELAY

macos - 如何在 Cocoa 套接字中发送格式良好的 HTTP 响应?

objective-c - 在 Cocoa/Objective-C 中创建看门狗的原因和方法

objective-c - 如何将字符串转换为一系列击键?

ios - 如何创建由多个 cocoa touch 对象组成的新对象?