SwiftUI: нажмите цель для панели навигации Кнопка смещена после отклонения листа - PullRequest
3 голосов
/ 02 февраля 2020

Я заметил довольно странное, возможно, ошибочное поведение в SwiftUI с использованием iOS 13.3.1 и более ранних версий. Чтобы продемонстрировать, это очень простой сценарий:

Полный пример кода:

import SwiftUI

struct ContentView: View {
    @State var showingSheet: Bool = false
    var body: some View {
        NavigationView {
            Text("ParentView")
                .navigationBarItems(trailing: Button(action: { self.showingSheet = true }) { Text("Show") })
        }.sheet(isPresented: $showingSheet) { SheetView() }
    }
}

struct SheetView: View {
    @Environment(\.presentationMode) var presentationMode
    var body: some View {
        VStack {
            Text("Sheet content")
            Button(action: { self.presentationMode.wrappedValue.dismiss() }) { Text("Hide") }
        }
    }
}

Воспроизвести:

  1. Запустите приложение на iOS 13.4.1
  2. Нажмите кнопку «Показать»
  3. (лист показывает, как и ожидалось)
  4. Отклоните лист, используя кнопка «Скрыть»
  5. (лист распускается, как и ожидалось)
  6. Попробуйте снова показать лист, используя кнопку «Показать»

Ожидаемый результат : лист снова отображается.

Фактический результат : цель нажатия кнопки «Показать» смещается на несколько пикселей вниз, в результате чего действие не запускается , Это также можно наблюдать в отладчике иерархии представлений:

Misaligned Views

Другие наблюдения:

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