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

macOS 14.5中SwiftUI Checkbox聚焦环过大偏移,是否为Bug?

macOS 14.5 SwiftUI Checkbox聚焦环过大偏移问题

问题说明

在macOS 14.5系统中,使用SwiftUI默认的.toggleStyle(.checkbox)时,Checkbox获得焦点后的聚焦环会出现尺寸过大且偏移的异常表现,该问题仅针对macOS平台,与iOS无关。

可复现代码

import SwiftUI

@main
struct CheckboxFocusRingBugApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .windowResizability(.contentSize)
    }
}

struct ContentView: View {
    @State var text1: String = ""
    @State var isOn1: Bool = true

    let promptText: String = "" 

    var body: some View {
        VStack(alignment: .leading, spacing: 12) {
            HStack(alignment: .top) {
                TextField(promptText, text: $text1)
                    .frame(width: 100)
                Toggle("", isOn: $isOn1)
                    .toggleStyle(.checkbox)
            }
        }
        .padding(16)
    }
}

#Preview {
    ContentView()
}

问题性质

这是macOS 14.5版本中SwiftUI框架的明确Bug,暂未在其他macOS版本中发现该问题。

临时修复方案

可以通过自定义ToggleStyle替代系统默认样式,手动绘制符合规范的聚焦环:

struct FixedCheckboxToggleStyle: ToggleStyle {
    func makeBody(configuration: Configuration) -> some View {
        Button(action: {
            configuration.isOn.toggle()
        }) {
            HStack(alignment: .center, spacing: 4) {
                Image(systemName: configuration.isOn ? "checkmark.square.fill" : "square")
                    .foregroundColor(configuration.isOn ? .accentColor : .primary)
                configuration.label
            }
        }
        .buttonStyle(.plain)
        .focusEffect(.disabled) // 禁用系统默认异常聚焦环
        .overlay {
            if configuration.isFocused {
                RoundedRectangle(cornerRadius: 4)
                    .stroke(Color.accentColor, lineWidth: 2)
                    .padding(-2) // 调整内边距匹配原生聚焦环尺寸
            }
        }
    }
}

// 使用示例
Toggle("", isOn: $isOn1)
    .toggleStyle(FixedCheckboxToggleStyle())

该方案通过自定义按钮实现Checkbox逻辑,同时手动绘制聚焦环,确保尺寸和位置符合原生控件的预期表现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:39:59