UIScrollView подкачки в одном направлении [дубликат]

Возможный дубликат:
Как включить направленную блокировку для UIScrollView?

Есть ли способ заставить UIScrollView выполнять пейджинг, например, только по горизонтали, а не при вертикальной прокрутке?

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

Конечно, тривиальное решение использует два UIScrollViews, по одному в каждом направлении, но в моем случае это нереальное решение.

 user120427107 мая 2012 г., 10:55
Это только предотвращает прокрутку в определенном направлении. Я хочу разрешить прокрутку во всех направлениях, но выполнять привязку к границам только по горизонтали
 Paul Peelen07 мая 2012 г., 10:06
Да, это возможноstackoverflow.com/questions/861986/...
 r-dent20 дек. 2017 г., 12:08
@casperone Я не вижу, как это дублирует отмеченный вопрос. Это про пейджинг. другой о направленной блокировке.

Ответы на вопрос(1)

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

Установить directionalLockEnabled = YESОберните UIScrollView в другое представление, которое пересылает касания (так как мы изменим fram`е scrollview)Установите высоту кадра UIScrollView равным 1 (чтобы минимизировать вертикальную привязку при обработке горизонтальной прокрутки)Определить направление текущего пролистывания (вscrollViewDidScroll:)
Если x contentOffset изменился, тогда установите pagingEnabled = YESЕсли изменился только y из contentOffset, тогда установите pagingEnabled = NO

Это будет имитировать сценарий, который вы хотите. Если вы проведете пальцем по горизонтали, страница будет привязана - и вертикальная привязка будет минимальной из-за высоты славы, установленной на 1.
При прокрутке только по вертикали, прокрутка будет прокручиваться свободно.

Ваш ответ на вопрос