SwiftUI(Xcode11)开发BMI计算器时如何收起数字键盘?
解决SwiftUI(Xcode 11)中数字键盘无法收起的问题
嘿,我之前在SwiftUI入门阶段也碰到过一模一样的键盘收不起来的问题,尤其是在Xcode 11的环境下,给你几个亲测有效的解决思路:
点击空白区域自动收起键盘
可以给你的主视图添加一个自定义手势修饰符,实现点击空白处收键盘的功能。先写一个View的扩展:extension View { func dismissKeyboardOnTap() -> some View { self.onTapGesture { UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) } } }然后在你的根视图上加上这个修饰符:
var body: some View { VStack { // 你的TextField、计算按钮等界面内容 } .dismissKeyboardOnTap() }这样用户点击界面上除键盘外的任意区域,键盘就会自动收起,就能顺利点击计算按钮了。
点击计算按钮时主动收起键盘
直接在计算按钮的点击事件里先执行收键盘的逻辑,再处理计算:Button("计算BMI") { // 先收起键盘 UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) // 再执行BMI计算逻辑 calculateBMI() }用状态变量控制TextField焦点
借助SwiftUI的状态驱动理念,通过切换TextField的焦点状态来收起键盘。首先定义一个状态变量:@State private var isTextFieldFocused = false给TextField绑定焦点状态:
TextField("输入体重", text: $weight) .focused($isTextFieldFocused)最后在计算按钮的点击事件里关闭焦点:
Button("计算BMI") { isTextFieldFocused = false calculateBMI() }Xcode 11对应的iOS 13已经支持
focused修饰符,放心用就好。
如果这些方法还是没解决问题,你可以把TextField和计算按钮相关的代码片段贴出来,这样能更精准地帮你定位问题~
内容的提问来源于stack exchange,提问作者Gadawg099
相关产品推荐
相关产品推荐

