iOS – UIPasteboard不能在应用外工作

我认为这是比我的应用程序更多的SDK漏洞,但最近我一直在尝试使用UIPasteboard从我的应用程序中复制string,它适用于在应用程序内部粘贴的地方。

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

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

在这种情况下它会打印出“blah”,每当我快速触摸一个文本框时,就会显示粘贴选项。 但是,如果我去Safari浏览器,笔记或邮件它不显示我的选项。

另外,如果我从邮件中复制东西,去我的应用程序,我不会看到粘贴选项以及…

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

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

我的意思是你的代码或第三部分的代码可能会在“DidEnterBackground”做大量的剪贴板。 尝试不要编码任何东西:

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

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

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

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

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

Flurry似乎通过释放3.0.4来解决这个问题

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

//保存文本

  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);