当前位置 : 主页 > 手机开发 > ios >

ios – 如何将富文本粘贴到UITextView中?

来源:互联网 收集:自由互联 发布时间:2021-06-11
我的应用程序允许用户通过单击一些格式按钮来格式化UITextView中的文本,这些按钮将属性应用于文本视图的attributedText属性.我想允许用户从一个UITextView复制他们的格式化文本,并使用标准
我的应用程序允许用户通过单击一些格式按钮来格式化UITextView中的文本,这些按钮将属性应用于文本视图的attributedText属性.我想允许用户从一个UITextView复制他们的格式化文本,并使用标准剪贴板和标准剪切/复制/粘贴菜单将其粘贴到另一个.

目前,如果我从UITextView复制格式化文本并将其粘贴到Mail应用程序中的新邮件中,则格式化将保留 – 因此格式化文本的复制将自动进行.但是,如果我将格式化文本粘贴到我的应用程序中的另一个UITextView中,则仅显示纯文本.

通过遵循Text Programming Guide for iOS中的“粘贴选择”部分,我能够覆盖UITextView的粘贴方法并拦截粘贴的内容:

- (void)paste:(id)sender {
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    NSLog(@"types available: %@", [pasteboard pasteboardTypes]);
    for (NSString *type in [pasteboard pasteboardTypes]) {
        NSLog(@"type %@ (%@): %@", type, NSStringFromClass([[pasteboard valueForPasteboardType:type] class]), [pasteboard valueForPasteboardType:type]);
    }
}

这告诉我,粘贴板包含以下格式的内容:com.apple.rtfd,public.rtf,public.text和“Apple Web Archive粘贴板类型”.文本的值是纯文本字符串,rtf的值是RTF字符串,两种Apple格式的值是NSData.

这就是我被困住的地方.如何将其中一个项目从粘贴板数据转换为为UITextView设置的属性字符串?

或者更好的是,有没有办法配置UITextView在粘贴时自动接受格式化文本,就像它在复制时自动提供格式化文本一样?

邓肯问道,“你确定你已经设置了uitextview来处理富文本.”我不知道有什么设置,但我再次检查了UITextView类引用并找到了allowEditingTextAttributes属性.之前我没有使用过,因为我提供了自己的格式化按钮,并且不需要启用系统Bold / Italic / Underline选项.但是当我为我的UITextView将该属性设置为YES时,它开始自动接受格式化文本.呼!
网友评论