我有同样的问题。根据该属性的UIPasteboard 类参考文档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]];
}
}