Saj*_*jon 6 macos textfield ios swift swiftui
我有一个用 SwiftUI 编写的多平台应用程序。我想在 iOS 和 macOS 之间共享尽可能多的代码。
我无法在 iOS 上同时显示 TextField 的title和。prompt当包装在 a 中时Form,两者都会显示在macOS上(当然前提是我们使用TextField初始化程序传递 atitle和 a ),但绝不会在 iOS 上显示。prompt
文件指出:
您可以在文本字段上设置明确的提示,以指导用户应提供哪些文本。每个文本字段样式决定文本字段使用提示和标签的位置和时间。例如,macOS 上的表单始终将标签放置在字段的前缘,并使用提示(如果可用)作为字段本身内的占位符文本。在 iOS 上的相同上下文中,文本字段使用提示或标签作为占位符文本,具体取决于初始化程序是否提供提示。
struct ContentView: View {
@State var text1 = ""
@State var text2 = ""
@State var text3 = ""
var body: some View {
Form {
TextField("T1", text: $text1, prompt: Text("P1"))
TextField(text: $text2, prompt: Text("P2")) {
Text("T2")
}
TextField("T3", text: $text3)
Text("iOS: `title` \"T1\" & \"T2\" is never shown, \"P1\", \"P2\" & \"T3\" is shown when fields are empty.")
}.padding()
}
}
Run Code Online (Sandbox Code Playgroud)
代码是一样的....
struct ContentView: View {
@State var text1 = ""
@State var text2 = ""
@State var text3 = ""
var body: some View {
Form {
TextField("T1", text: $text1, prompt: Text("P1"))
TextField(text: $text2, prompt: Text("P2")) {
Text("T2")
}
TextField("T3", text: $text3)
Text("macOS: `title` \"T1\", \"T2\" & \"T3\" are always shown, \"P1\", \"P2\" are shown when fields are empty.")
}.padding()
}
}
Run Code Online (Sandbox Code Playgroud)
该文档"Required"显示了一个使用密码字段提示的示例。当 iOS 上仅显示此内容prompt而不显示title “密码”时,这是非常令人困惑的。因为用户不知道她在输入什么......只是她正在输入需要的东西。
如何避免在 iOS 上prompt隐藏title,同时仍然在 macOS 上利用它们?感觉我必须编写自己的 TextField 视图来检查平台是否为 macOS 然后什么也不做,否则如果 iOS 添加手动title视图并将它们包装在 HStack/VStack 中?
我缺少什么?
| 归档时间: |
|
| 查看次数: |
2407 次 |
| 最近记录: |