UIScrollView contentOffset сбрасывается при нажатии - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть UIScrollView, который сбрасывает его contentOffset каждый раз, когда открывается вид.

Это демонстрируется здесь: https://gyazo.com/c8fb5c0fa5b6d53acf45c809dcb5b251

То, что я пробовал :

  1. Отключение блокировки клавиатуры
  2. Проверка isDragging на scrollViewDidScroll и сброс смещения содержимого, если оно было ложным.Это привело к нестабильному поведению.
  3. Чтение на этот вопрос , это не помогло.

Вы можете сами проверить это здесь: https://github.com/willbishop/scrollviewwizardry

Есть идеи?

1 Ответ

0 голосов
/ 31 декабря 2018

Вы можете отключить пейджинг, если это не тот результат, который вы ищете:

scrollView.isPagingEnabled = false

Если пейджинг равен , то вы ищетеиспользовать:

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

В вашей ситуации, если вы устанавливаете каждое представление в ScrollView равнымна высоту ScrollView, а высота ScrollView contentSize равна объединенной высоте его подпредставления, тогда подкачка будет работать правильно, и при касании смещение содержимого не будет сброшено:

scrollView.frame.size.height = view.frame.height
subView1.frame.size.height = view.frame.height
subView2.frame.size.height = view.frame.height
scrollView.contentSize.height = subView1.frame.height + subView2.frame.height

При отображении двух ваших представлений произойдет щелчоккогда ScrollView перестает прокручиваться.Вы также можете иметь свой «peekAmount», где второе представление отображается внизу, в то же время прокручиваясь до верхней «страницы», при условии, что высота вашего ScrollView contentSize равна удвоенной высоте границ ScrollView (т.е. две страницы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...