更改插入符号SwiftUI TextField MacOS的颜色

时间:2020-06-28 22:47:38

标签: macos colors swiftui textfield

我正在尝试在SwiftUI文本字段中更改插入符号的颜色。

我尝试过:

#!/usr/bin/python3.5 -Es

但是我收到一条错误消息,指出“'accentColor'在macOS中不可用”。有什么方法可以在MacOS中实现相同的目标? .foregroundColor仅更改文本颜色,而不更改插入符号。

2 个答案:

答案 0 :(得分:0)

此功能尚不可用。我向 Apple 提交了 FB8988194 以使 accentColor 像在 iOS 上一样设置光标颜色。

唯一的方法是使用 NSViewRepresentable 并将其设置在您的 NSTextField 中,如下所示:

struct YourCustomField: NSViewRepresentable{
  func makeNSView(context: Context) -> NSTextField {
    let textField = FancyTextField()
    ...
  }
  func updateNSView(_ nsView: NSTextField, context: Context) {
    ...
  }
}

class FancyTextField: NSTextField {
  override func becomeFirstResponder() -> Bool {
    let textView = window?.fieldEditor(true, for: nil) as? NSTextView
    textView?.insertionPointColor = NSColor(named: "YourColorName")!
    
    return super.becomeFirstResponder()
  }
}

如果有人知道纯 SwiftUI 方式,我很想了解它。

答案 1 :(得分:-1)

这是可行的解决方案。经过Xcode 12b测试

demo

if #available(OSX 10.16, *) {
    TextField("Placeholder", text: self.$text)
       .accentColor(.red)
} else {
    TextField("Placeholder", text: self.$text)
       .colorMultiply(.red)
}