gpt4 book ai didi

ios - 复制带有格式的文本 - iOS 6 NSAttributedString 到粘贴板

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:48:08 32 4
gpt4 key购买 nike

如何以编程方式从 UITextView 复制格式化文本(例如 斜体),以便在粘贴到另一个程序(例如 Mail)时保留格式?我假设正确的方法是将 NSAttributedString 复制到粘贴板。现在,我可以通过以下方式将常规字符串复制到粘贴板:

NSString *noteTitleAndBody = [NSString stringWithFormat:@"%@\n%@", [document title], [document body]];
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.string = noteTitleAndBody;

我注意到,如果我使用标准文本选择“复制”菜单项从 UITextView 选择并复制文本,它会按预期工作。但我需要通过我创建的按钮访问它。

我想也许我可以直接调用 UIResponderStandardEditActions复制方法。使用以下内容,粘贴到邮件中确实保留了格式,但我的应用程序也因此崩溃了。

NSMutableAttributedString *noteTitleAndBody = [[NSMutableAttributedString alloc] initWithString:[document title]];
[noteTitleAndBody appendAttributedString:[document body]];
[noteTitleAndBody copy:nil];

将不胜感激正确方法的示例。

PS - 我知道有与 NSAttributedString 和粘贴板相关的现有线程,但它们似乎是 for Cocoa , don't reference the UIResponderStandardEditActions Copy method ,或者早于 iOS 6,其中许多 UITextView 属性可用。

最佳答案

以下将适用于当前第一响应者的任何 textView:

[UIApplication sharedApplication] sendAction:@selector(copy:) to:nil from:self forEvent:nil];

因为我的复制按钮只有在我的 textView 退出 firstResponder 时才能访问,所以我不得不做更多的事情:

[self.noteTextView select:self];
self.noteTextView.selectedRange = NSMakeRange(0, [self.noteTextView.text length]);
[[UIApplication sharedApplication] sendAction:@selector(copy:) to:nil from:self forEvent:nil];
[self.noteTextView resignFirstResponder];

感谢以下为我指明正确方向的帖子:

Perform copy/cut from UIResponderStandardEditActions

can I call a select method from UIResponderStandardEditActions?

关于ios - 复制带有格式的文本 - iOS 6 NSAttributedString 到粘贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12789507/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com