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")
}
Примечание: конечно, это может потребовать ручного форматирования и компоновки внутри прокрутки, но такой ошибки нет.