@State 错误我位于导航栏的 TextField - SwiftUI
Posted
技术标签:
【中文标题】@State 错误我位于导航栏的 TextField - SwiftUI【英文标题】:@State bugs my TextField located at navbar - SwiftUI 【发布时间】:2020-02-09 15:00:46 【问题描述】:我的导航栏上有一个自定义文本字段,我不知道为什么会这样,但是当我点击任何字母时,我的键盘被隐藏了。
@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
)
)
【问题讨论】:
【参考方案1】:好吧,如果没有更多代码,很难给你一个确定的答案,但很可能是使用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
)
【讨论】:
以上是关于@State 错误我位于导航栏的 TextField - SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章