在macOS上,我需要一个SwiftUI表单,它有一个TextField (用于电子邮件),然后一个SecureField (用于密码)。看起来很简单,但是当我开始在TextField中输入时,字段下面会出现一个奇怪的视图:

一些意见:
如果TextField.
H 217F 218有人能提出避免或解决这个问题的方法吗?下面是代码(尽可能简化):
import SwiftUI
struct ContentView: View {
@State var emailAddress : String = ""
@State var password : String = ""
var body: some View {
Group {
TextField("Email:", text: $emailAddress)
SecureField("Password:", text: $password, prompt: nil)
}
.padding()
Spacer()
}
}Xcode 13.4.1;macOS 12.5;MacBook Pro (2020)。Xcode 13.4和macOS 12.4.x也发生了这种情况。
更新2022.08.13:来自多媒体的每个请求的是一个屏幕截图,在输入SecureField时会出现奇怪的视图。这里我添加了一个额外的TextField,就像建议的那样(虽然不是零高度,所以它在屏幕截图中是可见的)。
此外,我应该注意到,您可以使奇怪的视图消失,例如,通过按ESC键。

发布于 2022-09-27 06:34:29
我找到了解决问题的方法,只需将焦点()添加到secureField中,您可以尝试,它对我有用!
发布于 2022-09-06 01:26:00
在MacOS12.5.1上也有同样的问题,我安装了macos 13测试版6,并且修复了错误。这似乎是SecureField和macos 12上的TextField或TextEditor之间的一种奇怪的交互。
发布于 2022-08-09 12:44:39
我不知道发生这种情况的原因(也许它应该给出类似于SecureField的建议),但显然,当您在实际的TextField之上拥有相同的TextField时,情况就不是这样了。
这并不完美,因为顶部有极小的空间,但它能工作,而且比奇怪的窗口更好:


import SwiftUI
struct ContentView: View {
@State var emailAddress : String = ""
@State var password : String = ""
var body: some View {
VStack {
TextField("Email:", text: $emailAddress)
.frame(width: 0, height: 0)
TextField("Email:", text: $emailAddress)
SecureField("Password:", text: $password, prompt: nil)
}
.padding()
Spacer()
}
}我已经用Xcode 14 beta 3和我的MacBook Pro M1测试了它。
https://stackoverflow.com/questions/73277582
复制相似问题