You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 13.5 beta中SwiftUI的onFocus已弃用,如何解决?

原因说明

你原先使用的闭包形式onFocus是iOS 15早期beta阶段的临时测试API,并未进入苹果正式发布的SwiftUI版本,Xcode 13.5 beta正式移除了该API,因此原有代码无法运行。

适配方案(iOS 15+)

适配后需要配合@FocusState属性包装器实现同等的聚焦监听效果,完整示例代码如下:

struct DemoView: View {
    // 1. 声明聚焦状态绑定变量
    @FocusState private var isTextFieldFocused: Bool
    @State private var inputContent = ""

    var body: some View {
        TextField("输入提示", text: $inputContent)
            // 2. 将TextField的聚焦状态和上面声明的变量绑定
            .focused($isTextFieldFocused)
            // 3. 监听聚焦状态变化,执行对应逻辑
            .onChange(of: isTextFieldFocused) { isFocused in
                // 此处替换为你原先的逻辑即可
                variable = false
            }
    }
}

补充说明

  • 如果你需要区分聚焦/失焦的不同逻辑,只需要在onChange的闭包内判断isFocused的布尔值即可:
    .onChange(of: isTextFieldFocused) { isFocused in
        if isFocused {
            // TextField获得焦点时执行的逻辑
        } else {
            // TextField失去焦点时执行的逻辑
        }
    }
    
  • @FocusState还支持主动修改状态控制TextField的聚焦/失焦,比如调用isTextFieldFocused = true即可手动唤起输入框的焦点。

内容的提问来源于stack exchange,提问作者Sander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:06:05