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

SwiftUI中如何在FocusState从.distance切换至其他非nil值时触发onChange?

解决方案

要实现“焦点从.distance切换到其他非nil字段时触发逻辑”,你可以利用SwiftUI的onChange修饰符同时获取旧焦点值和新焦点值,通过判断这两个值的状态来触发目标代码。

具体做法如下:

  • 修改onChange的闭包参数,同时接收oldValue(之前的焦点状态)和newValue(当前的焦点状态)
  • 添加判断条件:oldValue == .distance 且 newValue != nil(确保是从.distance切换到其他有效字段)

修改后的代码示例:

.onChange(of: detailFocus) { oldValue, newValue in
    // 当焦点原本是.distance,且切换到其他非nil字段时执行
    if oldValue == .distance, newValue != nil {
        // 这里写你要执行的代码
    }
}

这个方案不需要额外存储状态,直接通过onChange提供的新旧值对比就能实现需求,完全适配你动态创建字段的场景——不管周围字段是什么,只要满足“从.distance切走且新焦点非空”的条件就会触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:32:04