iOS - UIPasteboard无法在app外工作

时间:2011-12-06 15:28:24

标签: iphone objective-c ios uipasteboard pasteboard

我认为这比我的应用程序更像是一个SDK漏洞但是最近我一直在尝试使用UIPasteboard从我的应用程序中复制字符串,当我在应用程序内部时,它可以正常粘贴。

当我通过按主页按钮或类似内容跳转到另一个应用程序时,我根本没有选择粘贴复制的内容。

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
[pasteboard setString: @"blah" ];
NSLog(@"%@", pasteboard.string);

在这种情况下会打印“blah”,每当我快速触摸文本字段时,它都会显示粘贴选项。但是,如果我去Safari,Notes或Mail它没有向我显示该选项。

另外,如果我从邮件中复制一些内容并转到我的应用程序,我也不会看到粘贴选项......

5 个答案:

答案 0 :(得分:4)

要在应用程序之间执行持久性粘贴板,必须使用

UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:pasteboardIdentifier create:YES];
[pasteboard setPersistent:YES];
[pasteboard setString:string];

答案 1 :(得分:2)

我有类似的问题。这可能与某些第三方库有些冲突。我发现当我删除Flurry Analytics时,一切都很好。我猜lib在“EnterBackground”事件上做了一些事情。

您可以尝试“清理”您的应用程序。删除AppDelgate的enterbackground委托上的函数调用。

我的意思是你的代码或第三部分代码可能在“DidEnterBackground”期间做了大量的剪贴板。尝试不要对此进行任何编码:

  • (void)applicationDidEnterBackground:(UIApplication *)application {}

还尝试删除需要您调用的第三方代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -

答案 2 :(得分:1)

我可以通过回到Flurry 2.8.4来恢复粘贴板功能。 Flurry 3.0.2和3.0.3以某种方式禁用了对记事本等外部应用程序的复制/粘贴支持。

答案 3 :(得分:1)

似乎Flurry通过发布3.0.4解决了这个问题

太糟糕了,我的用户投诉淹没了我的邮箱......

答案 4 :(得分:1)

//保存文字

  UIPasteboard* board = [UIPasteboard
pasteboardWithName:@"com.company.wtv" create:YES]; 
board.persistent=YES; [board setValue:@"123456ccc"
forPasteboardType:@"com.company.wtv.sharedValue"];

// Retrive text

    UIPasteboard* board = [UIPasteboard pasteboardWithName:@"com.company.wtv" create:YES];
    board.persistent=YES;
    NSData* result=nil;
    NSString*resultStr=nil;
    result =[board valueForPasteboardType:@"com.company.wtv.sharedValue"];
    resultStr=[[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];// I got resultStr containing
123456ccc

    NSLog(@"key %@",resultStr);