标签: uipasteboard

粘贴格式化的文本,而不是图像或HTML

我正在尝试模拟iOS Pages和Keynote应用程序的粘贴板行为。简而言之,允许将基本NSAttributedString文本格式(即BIU)粘贴到UITextView中,但不能粘贴到图像,HTML等中。

行为摘要

  1. 如果从Notes应用程序,Evernote复制格式化的文本,或从网站复制文本和图像,则Pages仅粘贴纯文本字符串
  2. 如果您从Pages或Keynote中复制格式化的文本,则会将格式化的文本粘贴到Pages,Keynote等中的其他位置。
  3. 一个不希望的结果,但也许很重要的一点是,Notes应用程序或Evernote都不会粘贴从Pages或Keynote复制的格式化文本。我推测应用之间的差异在于使用NSAttributedStrings而不是HTML?

这是如何完成的?在Mac OS上,您似乎可以要求粘贴板返回不同类型的自身,让其提供富文本格式和字符串表示形式,并首选使用富文本格式。不幸的是,iOS似乎不存在readObjectsForClasses。就是说,由于这篇文章,我可以通过日志看到iOS确实具有与RTF相关的粘贴板类型。但是,我找不到一种方法来请求粘贴板内容的NSAttributedString版本,以便可以优先进行粘贴。

背景

我有一个应用程序,允许UITextViews中的文本的基本NSAttributedString用户可编辑格式(即,粗体,斜体,下划线)。用户想要从其他应用程序复制文本(例如Safari中的网页,Notes应用程序中的文本),以粘贴到我的应用程序中的UITextView中。允许剪贴板默认运行,意味着我可能会得到应用程序不打算处理的背景颜色,图像,字体等。下面的示例显示了文本,当粘贴到我的应用程序的UITextView中时,具有背景色的复制文本看起来如何。

在此处输入图片说明

我可以通过继承UITextView来克服1

- (void)paste:(id)sender
{
    UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];
    NSString *string = pasteBoard.string;
    NSLog(@"Pasteboard string: %@", string);
    [self insertText:string];
}
Run Code Online (Sandbox Code Playgroud)

意外的结果是,失去了保留从我的应用程序中复制的文本格式的功能。用户可能想要从我的应用程序中的一个UITextView复制文本,然后将其粘贴到我的应用程序中的另一个UITextView。他们希望保留格式(即粗体,斜体,下划线)。

的见解和建议表示赞赏。

copy-paste nsattributedstring uipasteboard ios ios7

5
推荐指数
1
解决办法
1374
查看次数

将图像和文本复制到UIPasteboard

我想将图像和文本(两者)复制到UIPasteBoard. 是否可以复制文本和图像.

在这里,我只能复制图像或仅复制文本.如何复制?

我的复制图像代码如下,

UIPasteboard *pasteBoard = [UIPasteboard pasteboardWithName:UIPasteboardNameGeneral create:NO];
pasteBoard.persistent = YES;
NSData *data = UIImagePNGRepresentation(newImage);
[pasteBoard setData:data forPasteboardType:(NSString *)kUTTypePNG]; 
Run Code Online (Sandbox Code Playgroud)

提前致谢 !!!!!

iphone uipasteboard

4
推荐指数
2
解决办法
4361
查看次数

如何知道UITextView中何时触发粘贴事件?

我一直在IOS中使用Rich文本编辑器应用程序.

我的目的是检测粘贴事件的触发UITextView,并防止默认的粘贴操作.然后,我将转换UIPasteboard为我的编辑器应用程序格式的内容并将转换后的内容附加nsattributedstringUITextView.

我已经提到了以下链接:

检测用户单击UITextView中的粘贴按钮的时间.

我认为问题的解决方案与(UITextField而不是)相关UITextView(纠正我,如果我错了).

谢谢你的回答.

iphone uitextview uipasteboard ios

4
推荐指数
1
解决办法
5325
查看次数

将HTML复制到UIPasteboard

我想将HTML从我的应用程序传输到iPhone邮件应用程序.我已经有了HTML文本 - 至少说<span style ='color:red'>测试</ span>我可以将它放到UIPasteBoard - 但是当我将它粘贴到邮件时,我得到了html源代码.

当我在HTMLView中放置相同的字符串时 - 在那里选择并复制它,它将粘贴为邮件中的红色文本.

我需要做什么才能将字符串放在UIPasteBoard中,以便将其作为红色文本粘贴到邮件应用程序中?我一直在寻找"格式类型" - 并且发现当我在剪贴板中有元素(从UIWebView复制)时,UIPasteBoard返回"Aplle Web Archive粘贴板类型".但是在将内容添加到UIPasteBoard时将其设置为类型会在邮件应用程序中粘贴任何内容.

曼弗雷德

html iphone uipasteboard ios

3
推荐指数
2
解决办法
4453
查看次数

在后台运行时抓住像Pastebot这样的UIPasteboard

我知道这是可能的,因为Tapbots Pastebot这样做.当我的iPhone应用程序在后台运行时,我试图抓住UIPasteboard并将其添加到UITableView,就像Pastebot一样,但我也试图缩短链接,如果它是一个URL并将其复制回UIPastboard以便它准备就绪供用户粘贴到任何地方.现在,Pastebot通过播放音频文件10分钟显然在后台运行.我在applicationDidFinishLaunching中设置了NSNotificationCenter

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pasteboardChangedNotification:) name:UIPasteboardChangedNotification object:[UIPasteboard generalPasteboard]];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pasteboardChangedNotification:) name:UIPasteboardRemovedNotification object:[UIPasteboard generalPasteboard]];

- (void)pasteboardChangedNotification:(NSNotification*)notification {
pasteboardChangeCount_ = [UIPasteboard generalPasteboard].changeCount; 
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
     if (pasteboardChangeCount_ != [UIPasteboard generalPasteboard].changeCount) {
    [[NSNotificationCenter defaultCenter] postNotificationName:UIPasteboardChangedNotification object:[UIPasteboard generalPasteboard]];
     }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以指点我抓住UIPasteboard并缩短链接,如果它是一个URL并将其发送回UIPasteboard?我已经阅读了多任务开发文档和UIPasteboard文档.如果有人有解决方案,请与我分享?

谢谢

iphone url notifications multitasking uipasteboard

3
推荐指数
1
解决办法
5398
查看次数

想使用UIPasteBoard将gif粘贴到邮件窗口中

我想展示一个gif,所以我做的是我拆分我的gif并使用此链接在UIImageView的动画中显示它.

http://iphonenativeapp.blogspot.com/2011/03/how-to-show-animation-in-iphoneipad-app.html

现在,我想让用户复制gif并将其粘贴到邮件应用程序中.

如果我使用包含gif的所有分割图像的数组,则将4-5张图像粘贴到邮件应用程序中.

请帮我粘贴gif.谢谢!

gif uipasteboard ios

3
推荐指数
1
解决办法
2084
查看次数

其他应用在iOS 5中粘贴HTML而不是粘贴板数据的文​​本版本

我们有一个现有的应用程序,允许用户将文本复制到粘贴板.在可能的情况下,我们将HTML和纯文本放在剪贴板上,因为我们不知道用户可能粘贴的其他应用程序,并希望提供格式化(HTML)和未格式化的数据.

此功能在iOS 3和4中运行良好.但是一旦用户安装iOS 5,当他们将我们的应用程序中的文本粘贴到任何其他应用程序时,另一个应用程序将获取HTML文本但将其视为纯文本.因此,如果他们选择并复制H1标题,当他们粘贴到另一个应用程序时,而不是看到"这是一个标题",他们会看到"<h1>这是一个标题</ h1>".

请注意,现有代码在iOS 3和4中运行良好.在iOS 3,4和5之间我们的代码没有变化.

为了完整起见,这里是我们用来将我们的文本放在粘贴板上的代码,提供一个简单的字符串仅供参考:

NSString * plainText = @"A Big Heading\r\nA regular paragraph.";
NSString * htmlText = @"<h1>A Big Heading</h1><p>A regular paragraph.</p>";
UIPasteboard * pasteboard = [UIPasteboard generalPasteboard];
pasteboard.items = [NSArray arrayWithObject:
    [NSDictionary dictionaryWithObjectsAndKeys:
        plainText, @"public.utf8-plain-text", htmlText, @"public.html", nil]];
Run Code Online (Sandbox Code Playgroud)

显然,我的问题是"为什么iOS 5应用程序在请求纯文本时会获取HTML文本,而在iOS 4下运行的相同应用程序会获得纯文本?"

iphone uipasteboard uti ipad ios5

3
推荐指数
1
解决办法
1248
查看次数

将图像复制并粘贴到模拟器中的教科书中

我正在手动设置粘贴板中的复制内容

@IBAction func onOkPressed( button: UIButton ) {
    var testImage = getImageWithColor(UIColor.redColor(), size: CGSize(width: 100, height: 100));
    UIPasteboard.generalPasteboard().image = testImage
}

func getImageWithColor(color: UIColor, size: CGSize) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    color.setFill()
    UIRectFill(CGRectMake(0, 0, 100, 100))
    var image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image
}
Run Code Online (Sandbox Code Playgroud)

但是当我将图像粘贴到模拟器中的文本框中时,它不会粘贴图像.我已尝试使用本地png图像,而不是手动创建图像.当我在自定义键盘应用程序中粘贴到教科书上时,它会粘贴我的mac剪贴板中的文本而不是图像.但是,如果我以编程方式执行,则会UIPasteboard.generalPasteboard().string = "TeST"粘贴expect字符串.谁知道什么可能是错的?谢谢.

clipboard uipasteboard ios swift

3
推荐指数
1
解决办法
1877
查看次数

清除 UIPasteBoard

假设在 UIPasteBoard 上复制了 3 个字符串:

UIPasteboard.generalPasteboard().string="hello"
UIPasteboard.generalPasteboard().string="world"
UIPasteboard.generalPasteboard().string="!"
Run Code Online (Sandbox Code Playgroud)

我使用 UIPasteboard.generalPasteboard().string=""

它会清除粘贴板吗?UIPasteBoard 有没有类似的功能,就像 NSPasteBoard 有 clearContents() 一样?

uipasteboard swift

3
推荐指数
1
解决办法
3874
查看次数

我想在UILabel上使用原生iOS复制和粘贴UI

我想创建iOS时提供的本机复制和粘贴体验,当您点击并按住UITextField- 但我希望它可以在一个UILabel而不是一个UITextField.

这是可能的,还是只适用于它的东西UITextField?我是否需要创建自己的自定义用户界面并乱七八糟UIPasteboard或是否有更有说服力的解决方案?

这是一个典型的例子,虽然它通常也显示放大的圆圈:

它在文本字段中的外观的典型示例:

uilabel uipasteboard ios swift

3
推荐指数
1
解决办法
2581
查看次数