我正在自动执行复制命令,每隔一秒左右在粘贴板上放置一些文本 - 不幸的是,这是我访问文本的唯一方法,这是在另一个应用程序中。复制后,我访问粘贴板文本并进行处理。
有时,复制命令将在未选择任何内容时发送 - 例如在textEdit中,如果光标位于一行的末尾(而不是突出显示某些文本)并且您点击了复制,则会发出系统蜂鸣声,因为那里没有选择复制。粘贴板不会更新并保留其以前的数据。
我无法想出一种创造性的方法来确定何时发生这种情况。如果我发送一个复制命令并且粘贴板没有更新,我可以访问的粘贴板上是否有任何类型的时间戳,以确认是否已经捕获了某些内容?
我正在查看changeCount,但我不确定究竟是什么原因,文档对我没什么帮助 - 红鲱鱼?
感激地收到任何简单有效的想法!
答案 0 :(得分:11)
我不相信存在此通知,但您可以轮询粘贴板。
pasteboard = [[NSPasteboard generalPasteboard] retain];
[NSTimer scheduledTimerWithTimeInterval:0.25 target:self
selector:@selector(pollPasteboard:)
userInfo:nil repeats:YES];
- (void)pollPasteboard:(NSTimer *)timer {
NSInteger currentChangeCount = [pasteboard changeCount];
if (currentChangeCount == previousChangeCount)
return;
NSLog(@"Pasteboard updated: %@", [pasteboard types]);
previousChangeCount = currentChangeCount;
}
答案 1 :(得分:0)
只需多次从桌面复制相同的jpeg文件,您就会发现不能完全使用
NSLog(@"Pasteboard updated: %@", [pasteboard types]);
(
有时候:
2014-05-25 12:14:20.014 PB1[65771:303] (
"public.file-url",
"CorePasteboardFlavorType 0x6675726C",
"dyn.ah62d4rv4gu8y6y4grf0gn5xbrzw1gydcr7u1e3cytf2gn",
NSFilenamesPboardType,
"dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu",
"Apple URL pasteboard type"
)
有时:
2014-05-25 12:14:25.482 PB1[65771:303] (
"public.file-url",
"CorePasteboardFlavorType 0x6675726C",
"dyn.ah62d4rv4gu8y6y4grf0gn5xbrzw1gydcr7u1e3cytf2gn",
NSFilenamesPboardType,
"dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu",
"Apple URL pasteboard type",
"com.apple.icns",
"CorePasteboardFlavorType 0x69636E73",
fccc,
"public.utf16-external-plain-text",
"CorePasteboardFlavorType 0x75743136",
"public.utf8-plain-text",
NSStringPboardType,
"public.tiff",
"NeXT TIFF v4.0 pasteboard type"
)