Ответ 1
У меня была та же проблема. В соответствии с документацией по классу UIP-каталогов для свойства changeCount
(акцент мой):
Всякий раз, когда содержимое картон изменяется, в частности, когда добавляются, модифицируются или удаляются элементы картонной упаковки, UIPboardboard увеличивает значение этого свойства. После того, как он увеличивает счет изменения, UIPboardboard отправляет уведомления с именем UIPasteboardChangedNotification (для дополнений и модификаций) и UIPasteboardRemovedNotification (для удаления).... Класс также обновляет счетчик изменений , когда приложение повторно реагирует, а другое приложение изменило содержимое картонной упаковки. Когда пользователи перезапускают устройство, счетчик изменений reset равен нулю.
Я прочитал это для обозначения того, что мое приложение будет получать уведомления 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]];
}
}