文本字段 swiftui xcode 13
TextField swiftui xcode 13
我一直在使用 xcode 12 和 swiftui。在我的应用程序中,我有一个带有西班牙语和英语本地化占位符的 textFiel,我切换到 xcode 13,但它没有显示我的本地化占位符
这只发生在 TextField 中,使用 SecureField 即使使用 Text 也不会发生
这是我的代码
struct ContentView: View {
@State var email:String = ""
var body: some View {
VStack () {
TextField("login5", text: self.$email)
.autocapitalization(.none)
.padding()
.background(RoundedRectangle(cornerRadius: 50).stroke(Color("grayColor")))
}.padding(.horizontal, 20)
}
}
Localizable.strings
"login5" = "Correo eléctronico";
with SecureField
in ios15, 你可以使用提示参数来获取你的本地化字符串:
SecureField("purpose", text: $password, prompt: Text("login6"))
或使用标签:
SecureField(text: $password) {
Text("login6")
}
编辑 1:
这是我用来显示有效的本地化 TextField 和 SecureField 的测试代码。
import SwiftUI
@main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
@State var email = ""
@State var password = ""
@State var isVisible = false
var body: some View {
VStack (spacing: 55) {
Button(action: { isVisible.toggle() }) {
Text("Toggle isVisible")
}
TextField("login5", text: $email).border(.black)
if isVisible {
TextField("login6", text: $password).border(.green)
} else {
SecureField("password", text: $password, prompt: Text("login6")).border(.red)
}
}.padding(.horizontal, 20)
}
}
测试 Localizable.strings
文件。
"login5" = "hola login5";
"login6" = "contraseña";
EDIT2:手动使用 LocalizedStringKey 的替代方法,
TextField(LocalizedStringKey("login5"), text: $email)
你的主要问题是,就像 workingdog 已经说过的,你需要使用 text: $variable。
这意味着您将变量声明为 @State var password = "" 并像这样使用它..
struct ContentView: View {
@State var password = ""
...
if self.visible{
TextField("login6", text: $password)
....
} else {
SecureField("login6", text: $password)
....
}
}
顺便说一句。下次 post 你的代码是代码而不是图片。它更容易帮助你:)
希望我正确理解你的问题,这将是你的解决方案。
我遇到了完全相同的问题,从 Xcode 12 到 13。突然之间,我的某些(不是全部)文本字段不再显示本地化字符串。我能够通过强制解决问题:
TextField(LocalizedString("usernameLabel"), text: $username)
而不是
Textfield("usernameLabel", text: $username)
我一直在使用 xcode 12 和 swiftui。在我的应用程序中,我有一个带有西班牙语和英语本地化占位符的 textFiel,我切换到 xcode 13,但它没有显示我的本地化占位符
这只发生在 TextField 中,使用 SecureField 即使使用 Text 也不会发生
这是我的代码
struct ContentView: View {
@State var email:String = ""
var body: some View {
VStack () {
TextField("login5", text: self.$email)
.autocapitalization(.none)
.padding()
.background(RoundedRectangle(cornerRadius: 50).stroke(Color("grayColor")))
}.padding(.horizontal, 20)
}
}
Localizable.strings
"login5" = "Correo eléctronico";
with SecureField
in ios15, 你可以使用提示参数来获取你的本地化字符串:
SecureField("purpose", text: $password, prompt: Text("login6"))
或使用标签:
SecureField(text: $password) {
Text("login6")
}
编辑 1:
这是我用来显示有效的本地化 TextField 和 SecureField 的测试代码。
import SwiftUI
@main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
@State var email = ""
@State var password = ""
@State var isVisible = false
var body: some View {
VStack (spacing: 55) {
Button(action: { isVisible.toggle() }) {
Text("Toggle isVisible")
}
TextField("login5", text: $email).border(.black)
if isVisible {
TextField("login6", text: $password).border(.green)
} else {
SecureField("password", text: $password, prompt: Text("login6")).border(.red)
}
}.padding(.horizontal, 20)
}
}
测试 Localizable.strings
文件。
"login5" = "hola login5";
"login6" = "contraseña";
EDIT2:手动使用 LocalizedStringKey 的替代方法,
TextField(LocalizedStringKey("login5"), text: $email)
你的主要问题是,就像 workingdog 已经说过的,你需要使用 text: $variable。 这意味着您将变量声明为 @State var password = "" 并像这样使用它..
struct ContentView: View {
@State var password = ""
...
if self.visible{
TextField("login6", text: $password)
....
} else {
SecureField("login6", text: $password)
....
}
}
顺便说一句。下次 post 你的代码是代码而不是图片。它更容易帮助你:) 希望我正确理解你的问题,这将是你的解决方案。
我遇到了完全相同的问题,从 Xcode 12 到 13。突然之间,我的某些(不是全部)文本字段不再显示本地化字符串。我能够通过强制解决问题:
TextField(LocalizedString("usernameLabel"), text: $username)
而不是
Textfield("usernameLabel", text: $username)