Problemi di clic in SwiftUI Catalyst con Big Sur
Ho appena aggiornato a Big Sur e ora sto riscontrando seri problemi nella mia app Catalyst. Ho creato un nuovo progetto con un codice simile per testarlo. Il comportamento è leggermente diverso, ma in entrambi i casi c'è un punto in cui il clic smette di funzionare o almeno non è più affidabile.
Prendi questo codice di esempio:
struct ContentView: View {
private var tabs = ["tab1", "tab2", "tab3"]
@State private var selectedTab = 0
var body: some View {
VStack {
self.fakeTabs()
self.tabView()
}
}
private func fakeTabs() -> some View {
HStack(spacing: 0) {
// ========================================================
// Tabs
// ========================================================
ForEach(self.tabs, id: \.self) { tab in
ZStack {
// background
Rectangle()
.fill(self.isSelected(tab: tab) ? Color.blue : Color.green)
.border(Color.black, width: 1)
.contentShape(Rectangle())
// icon
HStack(spacing: 15.0) {
Image(systemName: "folder")
.foregroundColor(.white)
.frame(width: 20, height: 20)
Text(tab)
.font(.caption)
}
}
.onTapGesture {
self.selectedTab = self.tabs.firstIndex(where: { $0 == tab }) ?? 0 } } } .frame(height: 30) } private func tabView() -> some View { TabView(selection: self.$selectedTab) {
ForEach(self.tabs.indices) { index in
let tab = self.tabs[index]
Text("Tab selected: \(tab)")
.tabItem { Text(tab) }
.tag(index)
}
}
}
private func isSelected(tab: String) -> Bool {
if let index = self.tabs.firstIndex(where: { $0 == tab }) {
if index == self.selectedTab {
return true
}
}
return false
}
}
Se inizi a fare clic sulla barra delle schede in basso, funziona. Se continui a fare clic sulle schede in alto, funziona anche tu. Ma dopo aver fatto clic sulle schede false in alto, non puoi più fare clic sulla TabBar in basso.
Qualcun altro ha riscontrato questo problema? È un bug di Big Sur?
MODIFICARE
Funziona perfettamente nel simulatore su iPadOS.
Risposte
Sto affrontando problemi abbastanza simili. Ho anche un HStack come vista principale. In ogni riga ci sono pulsanti e campi di testo. Quando si aggiungono / rimuovono colonne, i pulsanti smettono di funzionare e i campi di testo focalizzati non possono più essere modificati con i clic (i clic con il tasto destro funzionano ancora). Ho anche osservato pulsanti non funzionanti in ZStacks. Sto ancora cercando di capire lo scenario problematico per riprodurlo in modo affidabile. Potrebbe essere qualcosa con HStack, dato che li usiamo entrambi.
Questo è sicuramente un grosso problema. Riportato anche quihttps://developer.apple.com/forums/thread/667004
Vorrei che Apple lo riconoscesse.