ペーストボードの内容に変更があると NSPasteboard#changeCount
がインクリメントされる。 KVO での監視はできないようなので素直にタイマーでポーリングをかければいい。
- (void)beginObservingPasteboard
{
self.changeCount = [[NSPasteboard generalPasteboard] changeCount];
[NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(observePasteboard:)
userInfo:nil
repeats:YES];
}
- (void)observePasteboard:(NSTimer *)timer
{
NSPasteboard *pboard = [NSPasteboard generalPasteboard];
if (pboard.changeCount > self.changeCount) {
[self pasteboardChanged:pboard];
}
self.changeCount = pboard.changeCount;
}
- (void)pasteboardChanged:(NSPasteboard *)pboard
{
// Do something with pboard
}