1 contributor
Issue: macOS Catalyst Navigation Freeze with TabView in MeterView
Description
- Aplicația USB Meter (SwiftUI + Catalyst) se bloca complet la navigarea
NavigationLink push și la deschiderea modalului sheet în mod macOS Catalyst (macOS 26 + Apple Silicon).
- Condiții: în detaliu (right pane) existau layout-uri cu tab-uri și paginare.
Impact
- Nu se puteau deschide ferestre modal și nici naviga spre info/settings.
- Doar pe Apple Silicon + macOS 26. Intel + Sonoma nu era afectat.
Root cause
- Commit introdus
324f2f8 a adus:
TabView + PageTabViewStyle în MeterView landscape
GeometryReader intern și .navigationBarHidden(landscape)
PageTabViewStyle pe Catalyst, în split NavigationView, pare să interfereze cu UINavigationController intern, blocând stările de navigare.
Investigatie și attempts
git bisect => first bad commit 324f2f8.
- Diagnostic:
PageTabViewStyle suspect.
- Inițial workaround:
#if targetEnvironment(macCatalyst) exclude PageTabViewStyle.
- Alte modificări încercate: blocare actualizare nav bar ascuns pe Catalyst, reducere BLE churn, diverse pipeline fixes (wireless caching etc.).
Soluție finală aplicată
- În
USB Meter/Views/Meter/MeterView.swift:
- Eliminat
PageTabViewStyle intern (deși nu era principal, s-a migrat la custom tab).
navigationBarHidden(landscape) folosit doar iOS, nu Catalyst.
- Înlocuit
Picker(.segmented) cu tab bar custom HStack + Button + icon/text, pentru consistență.
- Mutați datele
MeterInfoView în tab Home (fără buton info separat).
- adaptare portrait/landscape cu
segment stabil.
- titlu nav inline să comprime spațiul pe macOS.
Commit-uri relevante
ef857c8 - custom tabs + blocker solution
08a8ff3 - migrat MeterInfo content în Home și eliminat info button
Verificare
- Reproducere: deschide app pe macOS Catalyst Apple Silicon, selectează un meter, comută taburile, deschide history modal; verifică fără blocaje.
Document location
Documentation/Issue-Report-Catalyst-TabView-Blocking.md