代码之家  ›  专栏  ›  技术社区  ›  Ben Packard Ross Knipe

如何检查NSPasteboard是否已更新?

  •  4
  • Ben Packard Ross Knipe  · 技术社区  · 16 年前

    有时,当未选择任何内容时,会发送复制命令—例如,在textEdit中,如果光标位于行的末尾(而不是突出显示某些文本),并且您点击了copy,则会收到系统哔哔声,因为没有选择要复制的内容。粘贴板不会更新并保留其以前的数据。

    我想不出一个有创意的方法来确定什么时候会发生这种事。如果我发送一个copy命令,而粘贴板没有更新,那么粘贴板上是否有任何类型的时间戳,我可以访问这些时间戳来确认是否捕获了某些内容?

    任何简单而有效的想法,我都非常感激!

    2 回复  |  直到 16 年前
        1
  •  11
  •   Glyph    13 年前

    我不相信有一个通知,但你可以投票的粘贴板。

    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;
    }
    
        2
  •  0
  •   Alexey Ivanov    12 年前

    只需从桌面复制同一个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"
    )