SwiftUI: строки списка выделяются при взаимодействии с другими представлениями внутри TabView

Если List помещается вместе с другими видами в VStack который определяет одну страницу в TabView с участием PageTabViewStyle, взаимодействие (касание, долгое нажатие) с другими представлениями приводит к тому, что все (видимые) строки List выделиться.

Следующий вид демонстрирует это поведение: нажатие или долгое нажатие кнопки или фиолетовой области (Color View) вызовет выделение строк в списке (Xcode 12.1 & iOS 14.1).

struct ContentView: View {
    var body: some View {
        TabView {
            VStack {
                List {
                    Text("Row 0")
                    Text("Row 1")
                    Text("Row 2")
                }
                .listStyle(InsetGroupedListStyle())
                Spacer()
                Button(action: { print("tapped")}, label: { Text("Button") } )
                    .padding(.vertical, 80)
                Spacer()
                Color.purple
            }
            
            Text("Second Page")
        }
        .tabViewStyle(PageTabViewStyle())
    }
}

Я предполагаю, что это ошибка, и я уже отправил отзыв, но мне было интересно, есть ли обходной путь, пока он не исправлен.

1 ответ

интересно, есть ли обходной путь, пока он не исправлен.

После некоторого исследования и тестирования я вижу единственный обходной путь - вместо этого использовать режим прокрутки.

    TabView {
        VStack {
            ScrollView {        // << here
                Text("Row 0")
                Text("Row 1")
                Text("Row 2")
            }

Примечание: конечно, это может потребовать ручного форматирования и компоновки внутри прокрутки, но такой ошибки нет.

Другие вопросы по тегам