У меня была такая же проблема. Согласно документации UIPasteboard Class для свойства changeCount
(выделено мое):
Всякий раз, когда изменяется содержимое монтажной панели, в частности, при добавлении, изменении или удалении элементов монтажной панели, UIPasteboard увеличивает значение этого свойства. После увеличения числа изменений UIPasteboard публикует уведомления с именами UIPasteboardChangedNotification (для дополнений и изменений) и UIPasteboardRemovedNotification (для удалений). ... Класс также обновляет счетчик изменений , когда приложение повторно активируется, а другое приложение изменило содержимое монтажной панели. Когда пользователи перезапускают устройство, счетчик изменений сбрасывается в ноль.
Я прочитал это, чтобы означать, что мое приложение будет получать уведомления UIPasteboardChangedNotification
, как только мое приложение будет повторно активировано. Однако при внимательном прочтении выясняется, что при повторной активации приложения обновляется только changeCount
.
Я имел дело с этим, отслеживая changeCount
на монтажной панели в моем делегате приложения и публикуя ожидаемое уведомление, когда обнаружил, что changeCount
был изменен, когда приложение находилось в фоновом режиме.
В интерфейсе делегата приложения:
NSUInteger pasteboardChangeCount_;
А в реализации делегата приложения:
- (BOOL)application:(UIApplication*)application
didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(pasteboardChangedNotification:)
name:UIPasteboardChangedNotification
object:[UIPasteboard generalPasteboard]];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(pasteboardChangedNotification:)
name:UIPasteboardRemovedNotification
object:[UIPasteboard generalPasteboard]];
...
}
- (void)pasteboardChangedNotification:(NSNotification*)notification {
pasteboardChangeCount_ = [UIPasteboard generalPasteboard].changeCount;
}
- (void)applicationDidBecomeActive:(UIApplication*)application {
if (pasteboardChangeCount_ != [UIPasteboard generalPasteboard].changeCount) {
[[NSNotificationCenter defaultCenter]
postNotificationName:UIPasteboardChangedNotification
object:[UIPasteboard generalPasteboard]];
}
}