根據(jù)UIPasteboard Class Reference文檔關(guān)于 changeCount
屬性的部分(重點如下):
無論何時剪貼板的內(nèi)容改變——特別是剪貼板項目被添加、修改和移除的時候——UIPasteboard增加它的屬性值澈段。在它增加計數(shù)之后倾哺,UIPasteboard會發(fā)叫做UIPasteboardChangedNotification的通知(對于添加和修改)和叫做UIPasteboardRemovedNotification的通知(對于移除)力穗。...當一個程序恢復(fù)了,另一個程序改變了剪貼板內(nèi)容的時候也會改變這個數(shù)。當用戶重啟了設(shè)備混狠,這個數(shù)就重置到零了屑墨。
我讀了這個躁锁,對我的程序來說意味著會收到 UIPasteboardChangedNotification
通知,在app被恢復(fù)的時候卵史。很嚴謹?shù)拈喿x功底战转,但是app在被恢復(fù)的時候只有changeCount
被更新了。
我通過在app delegate中追蹤剪貼板的changeCount
解決了這個問題以躯,發(fā)現(xiàn)app在后臺的時候changeCount
被改變了就發(fā)布期望的通知槐秧。
在app delegate的interface里:
NSUInteger pasteboardChangeCount_;
在 app delegate的implementation里:
- (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]];
}
}