Big Sur를 사용하는 SwiftUI Catalyst의 클릭 문제

Nov 13 2020

방금 Big Sur로 업데이트했는데 이제 Catalyst 앱에서 심각한 문제가 발생했습니다. 나는 그것을 테스트하기 위해 비슷한 코드로 새 프로젝트를 만들었습니다. 동작은 약간 다르지만 두 경우 모두 클릭이 작동을 멈추거나 적어도 더 이상 신뢰할 수없는 지점이 있습니다.

이 예제 코드를 사용하십시오.

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
    }
}

하단의 탭 바를 클릭하면 작동합니다. 그런 다음 상단의 탭을 계속 클릭하면 작동합니다. 그러나 상단의 가짜 탭을 클릭 한 후에는 더 이상 하단의 TabBar를 클릭 할 수 없습니다.

다른 사람이이 문제를 경험합니까? Big Sur 버그입니까?

편집하다

iPadOS의 시뮬레이터에서 완벽하게 작동합니다.

답변

3 user11114569 Nov 17 2020 at 23:07

나는 매우 유사한 문제에 직면하고 있습니다. 또한 메인 뷰로 HStack이 있습니다. 각 행에는 버튼과 텍스트 필드가 있습니다. 열을 추가 / 제거 할 때 버튼 작동이 중지되고 포커스가있는 텍스트 필드는 더 이상 클릭으로 변경할 수 없습니다 (오른쪽 클릭은 여전히 ​​작동 함). ZStacks에서 작동하지 않는 버튼도 관찰되었습니다. 안정적으로 재현하기 위해 여전히 문제 시나리오를 파악하고 있습니다. 우리 둘 다 사용하기 때문에 HStack에 무언가가 될 수 있습니다.

3 Bret Nov 27 2020 at 01:13

이것은 확실히 중요한 문제입니다. 여기에서도보고 됨https://developer.apple.com/forums/thread/667004

나는 애플이 그것을 인정하기를 바란다.