Почему жест салфетки останавливает продвижение контроллера просмотра страниц после открытия и закрытия бокового меню?

#swiftui #uipageviewcontroller

#swiftui #uipageviewcontroller

Вопрос:

Мое приложение, написанное на SwiftUI 2.0, основано на UIPageViewController, который отображает четыре панели в обычном стиле загрузки. Пользователь может пролистывать их или продвигать их, используя кнопку со стрелкой внизу.

У меня также есть кнопка в левом верхнем углу, которая открывает выдвижное меню, которое можно закрыть с помощью жеста касания в любом месте интерфейса. Это вызвано изменением геометрии в программе swiftui «Geometry Reader», в которую встроен контроллер страниц.

Все это работает правильно, за исключением того, что, когда пользователь закрывает боковое окно, жесты свайпа не активируют переход между страницами. Активная страница скользит при пролистывании, но затем возвращается на место. Тем не менее, кнопка со стрелкой по-прежнему перемещает UIPageViewController на соответствующую следующую страницу.

Что заставляет жест свайпа становиться неактивным после срабатывания этого выдвигания?

Я опубликовал небольшой пример приложения, в котором описана проблема: https://github.com/stevepvc/Slide-and-Swipe-Concept . Код, управляющий выдвижным меню, находится в «Верхнем представлении содержимого».

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

1. Я думаю, что это как-то связано с координатором. Когда вы обычно перемещаетесь между страницами, viewControllerBefore и viewControllerAfter вызываются каждый раз вместе с updateUIViewController. Когда вы нажимаете кнопку меню, вызывается updateUIViewController, но функции Координатора — нет. Я не знаю решения. Почему бы не использовать собственный TabView {}.tabViewStyle(PageTabViewStyle()) вместо создания собственного пейджера?

2. @nicksarno честный ответ заключается в том, что я начал этот конкретный проект до того, как этот API был доступен! Спасибо, что указали мне на это решение!

3. Нет проблем — надеюсь, это сработает. Вы также можете попробовать github.com/fermoya/SwiftUIPager .