在 macOS 中,可以使用 NSPasteboard
类来监听剪贴板的变化。下面是一个简单的示例代码,用于在剪贴板内容发生变化时打印出剪贴板中的字符串:
import Cocoa
class ClipboardObserver: NSObject, NSPasteboardOwner {
let pasteboard = NSPasteboard.general
override init() {
super.init()
pasteboard.declareTypes([.string], owner: self)
pasteboard.addTypes([.string], owner: self)
pasteboard.owner = self
NotificationCenter.default.addObserver(self, selector: #selector(onPasteboardChanged), name: NSPasteboard.didChangeNotification, object: pasteboard)
}
@objc func onPasteboardChanged() {
if let content = pasteboard.string(forType: .string) {
print("剪贴板内容变化:\(content)")
}
}
// 此方法是必需的,用于满足 NSPasteboardOwner 协议
func pasteboardChangedOwner(_ sender: NSPasteboard) {
}
}
let observer = ClipboardObserver()
RunLoop.main.run()
在上述示例中,通过创建 ClipboardObserver
类,并在初始化方法中添加剪贴板内容类型为字符串,在剪贴板内容发生变化时,会触发 onPasteboardChanged
方法,将剪贴板中的字符串打印出来。最后使用 RunLoop.main.run()
方法来启动监听器,并保持程序保持运行状态。