面试题答案
一键面试主要步骤
- 为文本输入框添加焦点控制:使用
FocusState
来管理文本输入框的焦点状态。在视图结构体中声明一个@FocusState
属性,例如@FocusState private var focusedField: Field?
,这里Field
可以是一个自定义的枚举,用于标识不同的文本输入框。 - 为文本输入框关联焦点:在每个文本输入框的修饰符中使用
.focused($focusedField, equals:.specificField)
,其中.specificField
是Field
枚举中的一个成员,用于标识该特定的文本输入框。 - 处理键盘导航:SwiftUI默认支持基本的键盘导航,通过
Tab
键可以在可聚焦的视图间切换焦点。无需额外复杂设置,只要视图是可聚焦的(如文本输入框默认可聚焦),即可实现此功能。 - 监听回车键并触发按钮点击:为文本输入框添加
onSubmit
闭包。例如,对于一个文本输入框TextField("Placeholder", text: $text)
,可以添加.onSubmit { /* 触发按钮点击操作 */ }
。在闭包中,可以通过调用按钮的action
方法或者使用@State
和Button
的isPressed
属性来模拟按钮点击。如果按钮是一个自定义视图,可能需要为其添加一个可调用的方法来触发相应的操作。
关键SwiftUI API
- FocusState:用于管理视图的焦点状态。通过
@FocusState
属性包装器,可以声明一个状态变量来跟踪当前聚焦的视图。 - focused修饰符:
.focused(_:equals:)
用于将特定视图与FocusState
变量关联,从而控制视图何时获得焦点。 - onSubmit修饰符:
.onSubmit
用于为文本输入框添加一个闭包,当用户在文本输入框中按下回车键时,会执行这个闭包中的代码。