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

ToolbarItemGroup(placement:.keyboard)真机显示多按钮问题求助

问题解决:SwiftUI键盘工具栏按钮真机重复显示

问题代码

.toolbar(content: {
    ToolbarItemGroup(placement:.keyboard) {
        Spacer()
        Button {
            focus = false
        } label: {
            Text("close").foregroundColor(Color.theme)
        }
    }
})

问题现象

上述代码在模拟器中显示正常,但真机上出现多个重复的"close"按钮。

可能的原因及解决方法

  • 重复应用toolbar修饰符:检查是否在多个层级视图(如父视图、子视图、Sheet/NavigationView嵌套视图)或循环渲染视图(如List单元格、ForEach内部)中重复添加了这段toolbar代码。真机环境下SwiftUI会累积渲染所有应用的toolbar,而模拟器可能存在优化导致不显现。解决方式是确保仅在根容器或目标视图上添加一次该toolbar。
  • 缺少唯一标识:给toolbar添加唯一id属性,避免SwiftUI重复识别并渲染相同组件:
    .toolbar(id: "uniqueKeyboardCloseToolbar") {
        ToolbarItemGroup(placement: .keyboard) {
            Spacer()
            Button {
                focus = false
            } label: {
                Text("close").foregroundColor(Color.theme)
            }
        }
    }
    
  • 动态颜色逻辑问题:确认Color.theme的定义是否存在异常(比如在不同环境下重复生成视图),可以临时替换为系统颜色(如Color.blue)测试,排除颜色定义导致的间接渲染异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:02:32