我认为这比我的应用程序更像是一个SDK漏洞但是最近我一直在尝试使用UIPasteboard从我的应用程序中复制字符串,当我在应用程序内部时,它可以正常粘贴。
当我通过按主页按钮或类似内容跳转到另一个应用程序时,我根本没有选择粘贴复制的内容。
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
[pasteboard setString: @"blah" ];
NSLog(@"%@", pasteboard.string);
在这种情况下会打印“blah”,每当我快速触摸文本字段时,它都会显示粘贴选项。但是,如果我去Safari,Notes或Mail它没有向我显示该选项。
另外,如果我从邮件中复制一些内容并转到我的应用程序,我也不会看到粘贴选项......
答案 0 :(得分:4)
要在应用程序之间执行持久性粘贴板,必须使用
UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:pasteboardIdentifier create:YES];
[pasteboard setPersistent:YES];
[pasteboard setString:string];
答案 1 :(得分:2)
我有类似的问题。这可能与某些第三方库有些冲突。我发现当我删除Flurry Analytics时,一切都很好。我猜lib在“EnterBackground”事件上做了一些事情。
您可以尝试“清理”您的应用程序。删除AppDelgate的enterbackground委托上的函数调用。
我的意思是你的代码或第三部分代码可能在“DidEnterBackground”期间做了大量的剪贴板。尝试不要对此进行任何编码:
还尝试删除需要您调用的第三方代码: - (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);