Question

I think this is more of an SDK flaw than my apps' but recently I've been trying to use UIPasteboard to copy strings from my app and it works fine to pasting somewhere when I'm inside the app.

When I jump to another app by either pressing the home button or anything like that, I simply don't have the option to paste the copied content.

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

It will print "blah" in this case, and whenever I quick touch a textfield, it will show the paste option. But if I go to Safari, Notes or Mail It doesn't show me that option.

Also, If I copy something from mail and go to my app, I won't see the paste option aswell...

Was it helpful?

Solution

I have similar problem. That might be some conflicts with some third party library. I found that when I remove Flurry Analytics , everything is fine. I guess the lib does something on "EnterBackground" event.

You could try to "clean up" your application. remove function call on AppDelgate's enterbackground delegate.

I mean your code or third part code might do sth during "DidEnterBackground" that mass up your clipboard. try do not code anything on this:

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

Also try to remove third party code which need you to invoke in : -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions –

OTHER TIPS

To do a persistent pasteboard between applications you must use

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

I was able to restore pasteboard functionality by going back to Flurry 2.8.4. Flurry 3.0.2 and 3.0.3 somehow disabled copy/paste support with external apps like Notepad.

It seems that Flurry solved this problem by releasing the 3.0.4

Too bad, my users' complaints flooded my mailbox...

// Save text

  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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top