我正试图在iPhone Pasteboard中添加一些纯文本。以下代码似乎不起作用:
UIPasteboard *pboard = [UIPasteboard generalPasteboard];
NSString *value = @"test";
[pboard setValue: value forPasteboardType: @"public.plain-text"];
我猜测问题出现在PasteBoard类型参数中。传递@"public.plain-text"
没有任何反应。传递kUTTypePlainText
编译器抱怨指针类型不兼容,但不会崩溃,也没有任何反应。使用kUTTypePlainText
似乎也需要与MobileCoreServices
进行关联,而文档中没有提及。
答案 0 :(得分:19)
使用此标头获取kUTTypeUTF8PlainText;
的值#import <MobileCoreServices/UTCoreTypes.h>
您需要提供MobileCoreServices框架。
答案 1 :(得分:8)
回应评论和我自己的问题:
pasteboard
字符串属性有效。setValue:forPasteboardType:
代替kUTTypeUTF8PlainText
作为粘贴板类型,则使用kUTTypePlainText
也可以。我没有注意到字符串属性,因为我直接进入“获取和设置单个粘贴板项目”任务部分。
我测试的方法是单击文本字段,看看是否会出现粘贴弹出窗口。
我仍然不确定文档在哪里为iPhone解释UTT类型,包括在哪里获取它们(Framework,#include
文件),似乎“统一类型标识符概述”文档仍然是面向Mac OS。由于常量给了我一个类型不匹配警告,我以为我做错了,这就是为什么我第一次尝试使用NSString
文字。
答案 2 :(得分:3)
这是我将文本粘贴到粘贴板上的实验。我正在使用按钮以编程方式添加文本。
#import <MobileCoreServices/MobileCoreServices.h>
- (IBAction)setPasteboardText:(id)sender
{
UIPasteboard *pb = [UIPasteboard generalPasteboard];
NSString *text = @"東京京都大阪";
// Works, but generates an incompatible pointer warning
[pb setValue:text forPasteboardType:kUTTypeText];
// Puts generic item (not text type), can't be pasted into a text field
[pb setValue:text forPasteboardType:(NSString *)kUTTypeItem];
// Works, even with non-ASCII text
// I would say this is the best way to do it with unknown text
[pb setValue:text forPasteboardType:(NSString *)kUTTypeText];
// Works without warning
// This would be my preferred method with UTF-8 text
[pb setValue:text forPasteboardType:(NSString *)kUTTypeUTF8PlainText];
// Works without warning, even with Japanese characters
[pb setValue:text forPasteboardType:@"public.plain-text"];
// Works without warning, even with Japanese characters
[pb setValue:text forPasteboardType:@"public.text"];
// Check contents and content type of pasteboard
NSLog(@"%@", [pb items]);
}
我将内容粘贴到文本字段中进行检查,每次都更改了文本内容,以确保它不仅仅是重新使用以前的粘贴。