【发布时间】:2019-06-30 13:13:00
【问题描述】:
我在 SwiftUI 中有一个 SecureField。当该字段获得焦点时(当用户点击它时),我想操作 @State 属性以应用 SecureField 的偏移量修饰符。当 SecureField 失去焦点时,@State 属性应该再次重置。如果键盘被切换,我想这样做是为了让 SecureField 可见。
我使用 TextField 的 onEditingChanged 参数实现了这一点,但 SecureField 不存在此参数。
如何使用 SwiftUI 中的 SecureField 执行此操作?
如果 TextField 被聚焦,这将应用偏移:
import SwiftUI
let lightGreyColor = Color(red: 239.0/255.0, green: 243.0/255.0, blue: 244.0/255.0, opacity: 1.0)
struct ContentView : View {
@State private var textFieldString: String = ""
@State private var editingMode: Bool = false
var body: some View {
VStack {
SecureField($textFieldString, placeholder: Text("My placeholder"))
}
.padding()
.background(lightGreyColor)
.cornerRadius(10.0)
.padding()
.offset(y: editingMode ? -150 : 0)
}
}
但是如何在没有 onEditingChanged 参数的 SwiftUI 中使用 SecureField 来实现相同的功能?
struct ContentView : View {
@State private var textFieldString: String = ""
@State private var editingMode: Bool = false
var body: some View {
VStack {
SecureField($textFieldString, placeholder: Text("My placeholder"))
}
.padding()
.background(lightGreyColor)
.cornerRadius(10.0)
.padding()
.offset(y: editingMode ? -150 : 0)
}
}
【问题讨论】:
-
SecureField 没有 onEditingChanged。但是有TextField。不知道为什么?
-
我们解决了吗,我也遇到了同样的问题
-
@Andreas 你为什么不观察键盘会显示出版商?
-
让我澄清一下:聚焦和编辑是两个不同的东西。有两种焦点:硬件键盘焦点和可访问性焦点。 Apple 对焦点的定义是焦点让用户在实际激活之前选择他们想要激活的内容。当“辅助功能”>“全键盘访问”打开时,您可以在开始编辑之前使用键盘聚焦文本字段。事实上,您可以专注于与正在编辑的领域不同的领域。