gpt4 book ai didi

swiftui - 如何检测 TextEditor 何时聚焦(点击)

转载 作者:行者123 更新时间:2023-12-05 06:51:45 31 4
gpt4 key购买 nike

我有一个自定义的 TextField,我会在其中检测用户何时点击它来更改字段的外观,但我试图为 TextEditor 添加相同的外观, 但它没有 onEditingChanged 选项。

这是我的文本域:

struct CustomTextField : View {
@Binding var text : String
@State private var isEditing = false
@State var isDisabled = false

init(text : Binding<String>, isDisabled : Bool = false ){
self._text = text
self.isDisabled = isDisabled
}

var body: some View {
TextField("", text: $text, onEditingChanged: {
isEditing = $0
})
.padding(8)
.clipShape(RoundedRectangle(cornerRadius: 4))
.background (
RoundedRectangle(cornerRadius: 4)
.stroke(isEditing ? Color("Accent") : Color("Gray"), lineWidth: isDisabled ? 0 : 1)

)
}
}

我想添加一个点击手势识别器,但它只会在我点击时检测到,而不会在我离开文本编辑器时检测到。

有没有办法检测 TextEditor 的焦点状态?

最佳答案

从熟悉的坏消息“@available”开始,您可以使用 focused 修饰符,可从 iOS 15 获得。

struct ContentView: View {

@State private var text = "Hello focused!"
@FocusState private var isFocused: Bool

var body: some View {
TextEditor(text: $text)
.focused($isFocused)
.foregroundColor(isFocused ? .red : .black)
}
}

注意:

  1. 这在 Canvas 预览中不起作用,在模拟器上运行。
  2. 这是 FocusState 的简单使用。 FocusState 有很多 more options .

关于swiftui - 如何检测 TextEditor 何时聚焦(点击),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66106682/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com