Содержимое SwiftUI — NavigationLink не читается при представлении ContextMenu

#ios #swift #swiftui

#iOS #swift #swiftui

Вопрос:

У меня есть цветное NavigationLink контекстное меню. Его содержимое не читается при открытии контекстного меню. Я отказался от использования контекстного меню в непосредственном NavigationLink подпросмотре, но это все та же проблема.

 NavigationLink(destination: Text("View")) {
    VStack(alignment: .leading) {
        Text("Context Menu")

            .font(.system(size: 24, weight: .bold))
    }
    .frame(minWidth: 0, maxWidth: .infinity, idealHeight: 70)
    .foregroundColor(.white)
    .padding()
    .cornerRadius(3.0)
}
.background(Color.red)
.contextMenu {
    Section {
        Button(action: {
        }) {
            Label("Edit", systemImage: "square.and.pencil")
        }
    }
    
    Section(header: Text("Secondary actions")) {
        Button(action: {}) {
            Label("Delete", systemImage: "trash")
        }
    }
}
 

NavigatoinLinks выглядят как в исходном состоянии.

введите описание изображения здесь

При представлении контекстного меню. Проблема становится еще хуже, если я использую текст небольшого размера.

введите описание изображения здесь

Я тестировал ios 14.2 как на симуляторе, так и на физическом устройстве.


Информация

Иерархия представлений.

 ScrollView {
  LazyVStack {
      ForEach(data) { item in
        // NavigationLink
      }
  }
}
 

Обновить

Это аналогичный проект с той же проблемой.

 struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView {
                LazyVStack {
                    ForEach(0..<10) { item in
                        NavigationLink(destination: Text("View")) {
                            VStack(alignment: .leading) {
                                Text("Context Menu")
                                    .font(.system(size: 24, weight: .bold))
                            }
                            .frame(minWidth: 0, maxWidth: .infinity, idealHeight: 70)
                            .foregroundColor(.white)
                            .padding()
                            .cornerRadius(3.0)
                        }
                        .background(Color.red)
                        .contextMenu {
                            Section {
                                Button(action: {
                                }) {
                                    Label("Edit", systemImage: "square.and.pencil")
                                }
                            }
                            
                            Section(header: Text("Secondary actions")) {
                                Button(action: {}) {
                                    Label("Delete", systemImage: "trash")
                                }
                            }
                        }
                        
                    }
                }
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
 

Комментарии:

1. Не удается воспроизвести .. Xcode 12.2

2. Какая у вас версия iOS? У меня есть эта проблема в ios 14.2 как на симуляторе, так и на физическом устройстве.

3. Протестировано на симуляторе с 14.2. Если я нажимаю кнопку, вид не меняется. Остается прежним, и текст в порядке. Хорошо, только что увидел вашу иерархию. Я проверю еще раз. Возможно, из-за того, что лицо обернуто в ScrollView

4. Отлично работает с Xcode 12.1 / iOS 14.1. Не могли бы вы предоставить автономный воспроизводимый пример?

5. Я смог воспроизвести на симуляторах 14.2 и 14.0.1, но, что интересно, на Холсте этого не происходит. Я переместил красный фон на ярлык против NavigationLink , и он также размывается. Я думаю, что это связано с .contextMenu размыванием всего, за исключением NavigationLink того, что он не видит label как нечто, что он должен подчеркнуть, он видит это как все остальные «Представления», поэтому он размывает / затемняет его.