swiftui - 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)
}
}
可本地化的字符串
"login5" = "Correo eléctronico";
解决方案
在SecureField
ios15 中,您可以使用 prompt 参数来获取本地化字符串:
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)
推荐阅读
- c# - 带有 MySql 和 Dot Net Core 的 IdentityServer4 - 在类型“System.Int16”和“System.Boolean”之间没有定义强制运算符
- c# - 更新现有 UWP 包会删除旧应用版本的应用数据
- visual-studio-code - VSCode 扩展在开发中有效,但在打包到 VSIX 后无效
- ionic-framework - 如何在 Ionic 中从 Windows 机器调试真正的 iOS 设备
- android - 矢量可绘制不覆盖
- sql - 如何将我的 Excel If 语句转换为 SQL 查询
- python - 如何在 Eclipse Che 中从 Python 打开新的浏览器选项卡?
- html - CSS奇怪的问题 - 当浏览器宽度改变时显示不同
- scala - 通过 MemSQL 中的分区下推在 Spark 中启用并行化
- azure - 您如何在放大和缩小时获取数据(多边形/数据引脚)?