我想模拟iOS页面和Keynote应用程序的粘贴板行为。总之,让基本NSAttributedString文本格式(即BIU)被粘贴到一个UITextView,而不是图像,HTML等粘贴带格式的文本,而不是图像或HTML
行为摘要
如果您复制从Notes应用,Evernote的格式化文本,或者来自网站的文本和图像,页面将仅粘贴纯文本字符串
如果您从Pages或Keynote内复制格式化文本,它将在Pages,Keynote等其他位置粘贴格式化文本。
不受欢迎的后果,但也许重要的是承认,Notes应用程序或Evernote都不会粘贴表单从Pages或Keynote中复制的初始文本。我猜测应用程序之间的差异是使用NSAttributedStrings,而不是HTML?
这是如何完成的?在Mac OS上,看起来你可以自己ask the pasteboard to return different types,它提供了丰富的文本和字符串表示,并且使用富文本作为首选。不幸的是,iOS的readObjectsForClasses似乎不存在。也就是说,我可以通过日志看到iOS确实有一个RTF相关类型的粘贴板,thanks to this post。然而,我不能找到一种方法来请求一个NSAttributedString版本的粘贴板内容,这样我就可以优先粘贴它。
背景
我在UITextViews一个文本的应用程序,允许基本NSAttributedString用户可编辑的格式(即粗体,斜体,下划线)。用户想要复制其他应用程序中的文本(例如Safari中的网页,Notes应用程序中的文本),以便粘贴到我的应用程序中的UITextView中。允许粘贴板以默认方式运行意味着我最终可能会收到我的应用程序无意处理的背景颜色,图像,字体等。下面的例子显示了当粘贴到我的应用程序的UITextView中时,如何复制具有背景颜色的文本。
我可以通过继承的UITextView
- (void)paste:(id)sender
{
UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];
NSString *string = pasteBoard.string;
NSLog(@"Pasteboard string: %@", string);
[self insertText:string];
}
意想不到的后果是,失去了保留这是一个从我的应用程序中复制的文本格式的能力,克服1。用户可能想从我的应用中的一个UITextView复制文本,并将其粘贴到我的应用中的另一个UITextView。他们希望保留格式(即粗体,斜体,下划线)。
洞察力和建议表示赞赏。
2015-01-04
DenVog
+0
是的,这可能RTFD VS HTML那是当它涉及到样式跨应用,pasteability区别:) –