7

我认为这更像是一个 SDK 缺陷,而不是我的应用程序,但最近我一直在尝试使用 UIPasteboard 从我的应用程序中复制字符串,当我在应用程序内部时,它可以很好地粘贴到某个地方。

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

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

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

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

4

5 回答 5

4

要在应用程序之间做一个持久的粘贴板,您必须使用

UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:pasteboardIdentifier create:YES];
[pasteboard setPersistent:YES];
[pasteboard setString:string];
于 2012-11-23T15:18:54.723 回答
2

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

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

我的意思是你的代码或第三方代码可能会在“DidEnterBackground”期间做某事,这会增加你的剪贴板。尝试不要对此进行任何编码:

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

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

于 2011-12-09T07:38:16.380 回答
1

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

于 2011-12-09T19:16:53.150 回答
1

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

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

于 2011-12-14T22:56:51.663 回答
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);
于 2015-07-20T04:11:02.967 回答