如何为 SwiftUI 的 TextEditor 设置 isEditable 和 isSelectable?

问题描述 投票:0回答:1

我正在寻找等效项来控制 SwiftUI 的 TextEditor 中 NSTextView 的 isEditable 和 isSelectable 属性。

在 AppKit 中,我可以使用以下方法轻松使文本视图可编辑或可选择:

textView.isEditable = isEditable
textView.isSelectable = isSelectable

但是,我无法找到如何使用 SwiftUI 中的文本编辑器实现类似的功能。

swiftui appkit
1个回答
0
投票

防止文本选择

从 macOS Sonoma 14.3.1 开始,

TextEditor
not 不支持
textSelection
selectionDisabled
修饰符。我们需要采取其他手段:

防止文本编辑

要防止文本编辑,请将

Binding.constant
传递给
TextEditor

演示

使用 tab 将焦点移出

TextField
。使用 ⌃tab(控制选项卡)将焦点移出
TextEditor

import SwiftUI

struct MyView: View {
    @State var text = "hello world"

    var body: some View {
        Form {
            TextField("top", text: $text)

            LabeledContent("Editable") {
                TextEditor(text: $text)
            }

            LabeledContent("Selectable") {
                TextEditor(text: .constant(text))
            }

            LabeledContent("Unselectable") {
                TextEditor(text: $text)
                    .allowsHitTesting(false)
                    .focusable(false)
            }

            TextField("bottom", text: $text)
        }
    }
}

#Preview {
    MyView()
        .padding()
}
© www.soinside.com 2019 - 2024. All rights reserved.