SwiftUI - 如何将文本复制到剪贴板?

Ger*_*ard 13 copy-paste swiftui

如何将文本字段的内容复制到 iOS 剪贴板?

我有以下代码 & 想用将文本字段的内容复制到 iOS 剪贴板的语句替换“print(..)”语句。

Text(self.BLEinfo.sendRcvLog)
    .onTapGesture(count: 2) {
        print("Copy text field content to ClipBoard Here..")
    }
Run Code Online (Sandbox Code Playgroud)

似乎找不到任何 SwiftUI 示例如何执行此操作。

谢谢!

Asp*_*eri 19

使用以下

import MobileCoreServices // << for UTI types

// ... other code

Text(self.BLEinfo.sendRcvLog)
    .onTapGesture(count: 2) {
        UIPasteboard.general.setValue(self.BLEinfo.sendRcvLog, 
            forPasteboardType: kUTTypePlainText as String)
    }
Run Code Online (Sandbox Code Playgroud)


Cha*_* Dp 13

适用于 iOS 14+

UIPasteboard.general.setValue(message, forPasteboardType: "public.plain-text")
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。[当前接受的答案](/sf/answers/4324073071/) 无法在 XCode 13 中编译。 (3认同)
  • 正如目前所写的,您的答案尚不清楚。请[编辑]添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以[在帮助中心](/help/how-to-ask)找到有关如何写出好的答案的更多信息。 (2认同)

Zap*_*pel 9

Text(self.BLEinfo.sendRcvLog)
    .onTapGesture(count: 2) {    
        UIPasteboard.general.string = self.BLEinfo.sendRcvLog
    }
Run Code Online (Sandbox Code Playgroud)

或者真的很花哨:

Text(self.BLEinfo.sendRcvLog)
    .contextMenu {
        Button(action: {
            UIPasteboard.general.string = self.BLEinfo.sendRcvLog
        }) {
            Text("Copy to clipboard")
            Image(systemName: "doc.on.doc")
        }
     }
Run Code Online (Sandbox Code Playgroud)