我在导航栏上有一个自定义TextField,我不知道为什么会这样,但是当我单击任何字母时,我的键盘都是隐藏的。
@State var value = ""
// Body view calls
.navigationBarItems(trailing: SearchBar())
func SearchBar() -> some View {
if (isSearchMode) {
return (
AnyView(
CustomTextField(
text: $value,
isFirstResponder: true,
placeholder: "Testing",
keyboardType: UIKeyboardType.webSearch
)
.frame(width: 300, height: 50)
.padding()
)
)
}
return AnyView(
Image(systemName: "magnifyingglass")
.imageScale(.large)
.gesture(
TapGesture()
.onEnded { _ in
self.isSearchMode = true
}
)
)
}
答案 0 :(得分:0)
在没有更多代码的情况下很难给您肯定的答案,但是很可能使用AnyView
。当您使用AnyView
并进行某些@State
更改而导致其重绘时,它将失去其他状态,例如被编辑。
您可以通过将SearchBar()
更改为此来解决此问题:
func SearchBar() -> some View {
Group {
if (isSearchMode) {
CustomTextField(
text: $value,
isFirstResponder: true,
placeholder: "Testing",
keyboardType: UIKeyboardType.webSearch
)
.frame(width: 300, height: 50)
.padding()
} else {
Image(systemName: "magnifyingglass")
.imageScale(.large)
.gesture(
TapGesture()
.onEnded { _ in
self.isSearchMode = true
}
)
}
}
}