使用 .focused() 点击不同视图时如何删除 TextField 焦点?
Posted
技术标签:
【中文标题】使用 .focused() 点击不同视图时如何删除 TextField 焦点?【英文标题】:How can I remove TextField focus when tapping a different view using .focused()? 【发布时间】:2021-09-30 21:51:14 【问题描述】:我正在尝试使用 ios15 的 .focused() 修饰符来使用户能够点击文本字段之外的任何位置来移除焦点。我将脱离https://www.youtube.com/watch?v=GqXVFXnLVH4 中提供的示例。以下是我的非工作尝试:
enum Field
case textField
case notTextField
struct ContentView: View
@State var textInput = ""
@FocusState var focusState:Field?
var body: some View
VStack
TextField("Enter some text...", text: $textInput)
.focused($focusState, equals: .textField)
Rectangle()
.focused($focusState, equals: .notTextField)
.onTapGesture
state = .notTextField
【问题讨论】:
【参考方案1】:我发现解决方案不是聚焦另一个元素,而是将文本字段的焦点切换为 false:
@State var textInput = ""
@FocusState var textFieldIsFocused: Bool
var body: some View
VStack
TextField("Enter some text...", text: $textInput)
.focused($textFieldIsFocused)
Rectangle()
.onTapGesture
textFieldIsFocused = false
【讨论】:
以上是关于使用 .focused() 点击不同视图时如何删除 TextField 焦点?的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义滑动(而不是滑动删除)单元格(滑动到邮件/短信)中点击一个单元格时删除在其他 TableView 单元格中添加的子视图