我正在使用SwiftUI和NSView可表示创建一个可以显示可选文本的自定义NSTextView.以下是我的代码:

struct SelectableText: NSViewRepresentable {
    let text: String
    let font: NSFont?
    
    init(text: String, font: NSFont? = nil) {
        self.text = text
        self.font = font
    }
    
    func makeNSView(context: Context) -> NSTextField {
        let textField = NSTextField(wrappingLabelWithString: text)
        textField.isBezeled = false
        textField.isEditable = false
        textField.isSelectable = true
        textField.backgroundColor = .clear
        textField.font = font ?? NSFont.systemFont(ofSize: NSFont.systemFontSize)
        return textField
    }
    
    func updateNSView(_ nsView: NSTextField, context: Context) {
        nsView.stringValue = text
        nsView.font = font ?? NSFont.systemFont(ofSize: NSFont.systemFontSize)
    }
}

我想在NSTextView中更改 Select 突出显示的 colored颜色 .我try 设置seltedTextAttributes属性,但没有按预期工作.NSTextView未收到正确处理文本 Select 所需的事件.

如何在SwiftUI中更改NSTextView中的 Select colored颜色 ?任何帮助都将不胜感激.

推荐答案

如果你的意思是NSTextView,这里有一个可能的方法:

struct SelectableTextView: NSViewRepresentable {
    let text: String
    let font: NSFont?
    
    init(text: String, font: NSFont? = nil) {
        self.text = text
        self.font = font
    }
    
    func makeNSView(context: Context) -> NSTextView {
        let textView = NSTextView(frame: .zero)
        textView.isEditable = false
        textView.isSelectable = true
        textView.backgroundColor = .clear
        textView.font = font ?? NSFont.systemFont(ofSize: NSFont.systemFontSize)
        textView.string = text
        
        textView.selectedTextAttributes = [
            NSAttributedString.Key.foregroundColor : NSColor.systemGreen, // Change the text color
            NSAttributedString.Key.backgroundColor: NSColor.systemRed// Change the background color
        ]
        return textView
    }
    
    func updateNSView(_ nsView: NSTextView, context: Context) {
        nsView.string = text
        nsView.font = font ?? NSFont.systemFont(ofSize: NSFont.systemFontSize)
    }
}

Swift相关问答推荐

如何防止自动状态恢复,如果应用程序被启动打开特定的文档?

Swift C外部实现的Task / Future类类型

ARRaycast Query和前置摄像头(ARFaceTrackingConfiguration)

查找数组中 ** 元素 ** 的属性的最小值和最大值

UICollectionViewCompostionalLayout Collectionview单元格宽度在重新加载数据后未正确调整大小

如何在SwiftUI中做出适当的曲线?

更改 SwiftUI 中按钮矩阵的填充 colored颜色

计算 CoreData 中所有唯一对象的数量?

在 Swift 中将异步任务包装到 DispatchWorkItem 中以使其可取消?

如何从 RC 加载场景作为 ModelEntity 而不是普通实体?

为什么 SwiftUI 中 ForEach 的这个 Select 不起作用?

从 actor 的 init 方法调用方法

在 macOS (Swift) 上获取 BSD 驱动器名称的最佳方法是什么?

在 Swift 中从 HTML 生成带有图像的 PDF 而不显示打印界面

我将哪种 Swift 数据类型用于货币

如果没有标记,则为 Swift 预处理器

使用 Alamofire 4.0 (Swift 3) 下载文件

不支持用作符合协议 AnyObject 的具体类型

在 UItextfield 的右视图上添加一个按钮,文本不应与按钮重叠

将 UIImage 剪成圆形