iOS - UIPasteboard не работает вне приложения - PullRequest
7 голосов
/ 06 декабря 2011

Я думаю, что это скорее недостаток SDK, чем в моих приложениях, но недавно я пытался использовать UIPasteboard для копирования строк из моего приложения, и он отлично работает, чтобы вставлять куда-нибудь, когда я внутри приложения.

Когда я переключаюсь в другое приложение, нажимая кнопку «Домой» или что-то в этом роде, у меня просто нет возможности вставить скопированный контент.

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

«Будет напечатано»бла "в этом случае, и всякий раз, когда я быстро касаюсь текстового поля, он показывает опцию вставки.Но если я зайду в Safari, Notes или Mail, эта опция мне не покажется.

Кроме того, если я скопирую что-нибудь из почты и зайду в свое приложение, я также не увижу опцию вставки ...

Ответы [ 5 ]

4 голосов
/ 23 ноября 2012

Чтобы сделать постоянный монтаж между приложениями, вы должны использовать

UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:pasteboardIdentifier create:YES];
[pasteboard setPersistent:YES];
[pasteboard setString:string];
2 голосов
/ 09 декабря 2011

У меня похожая проблема. Это может быть некоторые конфликты с какой-либо сторонней библиотекой. Я обнаружил, что когда я удаляю Flurry Analytics, все в порядке. Я предполагаю, что библиотека что-то делает на событии "EnterBackground".

Вы можете попытаться "очистить" свое приложение. удалить вызов функции на делегате appDelgate enterbackground.

Я имею в виду, что ваш код или код третьей части может выполнять что-то во время "DidEnterBackground", что увеличивает ваш буфер обмена. постарайся ничего не кодировать на этом:

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

Также попробуйте удалить сторонний код, который необходимо вызывать в: - (BOOL) приложении: (UIApplication *) приложении didFinishLaunchingWithOptions: (NSDictionary *) launchOptions -

1 голос
/ 20 июля 2015

// Сохранить текст

  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);
1 голос
/ 15 декабря 2011

Кажется, что Flurry решил эту проблему, выпустив 3.0.4

Жаль, жалобы моих пользователей затопили мой почтовый ящик ...

1 голос
/ 09 декабря 2011

Мне удалось восстановить функциональность картона, вернувшись к Flurry 2.8.4.Flurry 3.0.2 и 3.0.3 почему-то отключили поддержку копирования / вставки с помощью внешних приложений, таких как Блокнот.

...