OnPasteboardChange 1.0.0

OnPasteboardChange 1.0.0

Kyle Nazario 维护。



  • Kyle Nazario

OnPasteboardChange

一个 SwiftUI 视图修饰符,当剪贴板更改时触发回调。与 UIKit 和 AppKit 兼容 - 是跨平台 SwiftUI 项目的完美选择。

安装

支持 iOS 14.0+ 和 macOS 11.0+。

Swift 包管理器

在 Xcode 中,文件 -> Swift 包 -> 添加包依赖... 并粘贴 https://github.com/kyle-n/OnPasteboardChange

CocoaPods

pod OnPasteboardChange 添加到您的 Podfile,并在项目目录中运行 pod install

用法

import OnPasteboardChange

struct ContentView: View {
    @State private var text: String = ""
    
    var body: some View {
        VStack {
            TextEditor(text: $text)
                .padding()
                .onPasteboardChange {
                    print("The clipboard was changed!")
                    let latestItem = UIPasteboard.general.items.first
                }
        }
    }
}

此修饰器所做的只是通知您的代码剪贴板已更改。然后您的代码可以检查剪贴板、从中读取、写入或执行您喜欢的任何操作。这样,您的代码可以控制何时检查剪贴板(何时触发iOS 14“X应用从Y应用粘贴”的提示框)。

当应用处于后台时,修饰器会捕获剪贴板的变化。这在iOS和macOS上都是适用的。

自定义剪贴板

默认情况下,.onPasteboardChange会监视UIPasteboard.generalNSPasteboard.general的更改。但是,如果您有自定义剪贴板,您也可以跟踪该剪贴板的更改。

import OnPasteboardChange

struct ContentView: View {
    @State private var text: String = ""
    
    let pb = UIPasteboard.withUniqueName()
    
    var body: some View {
        VStack {
            Button("Add to Custom Pasteboard") {
                pb.addItems([["newItem": "value"]])
            }
            TextEditor(text: $text)
                .padding()
                .onPasteboardChange(for: pb) {
                    // only triggered after pressing "Add to Custom Pasteboard"
                    print("custom pb changed")
                }
        }
    }
}

感谢

Kyle Nazario创建。