2-е обновление Благодаря комментарию @Segev и ссылке на другую тему, я смог улучшить демонстрацию чтобы заставить его в основном делать то, что я хотел. Тем не менее, это все еще не так гладко, как реализация Instagram, и мне было интересно, знает ли кто-нибудь, как я мог бы улучшить его, чтобы он стал более плавным? Кроме того, я заметил, что иногда (в моей демонстрации), когда я прокладываю влево/вправо очень быстро, и я хочу переключиться на прокрутку вверх/вниз, он все равно продолжит прокручивать влево/вправо, пока я не остановлю прокрутку и не позволяю сначала остановитесь.
Обновление:. Мне удалось заставить представление таблицы прокручивать влево/вправо после остановки прокрутки вверх/вниз путем наследования из UIScrollView и реализации методов shouldRecognizeSimultaneousWithGestureRecognizer и shouldBeRequiredToFailByGestureRecognizer из UIGestureRecognizerDelegate. Моя идея состояла в том, чтобы вернуть true в shouldRecognizeSimultaneousWithGestureRecognizer, если пользователь прокручивает вверх/вниз по таблицеView, а затем в shouldBeRequiredToFailByGestureRecognizer, чтобы вывести из строя жест вверх/вниз таблицы.
Но я все еще не могу понять, как позволить пользователю прокручивать вверх/вниз или влево/вправо после остановки начального прокрутки вверх/вниз (и палец пользователя все еще находится на устройстве).
Я создал образец проекта здесь https://github.com/paulsfds/TableViewsInScrollView. Вы можете протестировать это, прокручивая один раз на столе, затем отпустите свой палец и, пока он все еще прокручивается, верните свой палец, чтобы остановить прокрутку. Пока ваш палец все еще находится на столе, попробуйте прокрутить влево/вправо, и он должен работать. Но с этой реализацией, если вы попытаетесь несколько раз пронести по экрану таблицы, она иногда застревает, потому что будет думать, что вы пытаетесь пронести влево/вправо. Любые идеи?
Оригинал: У меня есть пара UITableViews, которые находятся в UIScrollView с включенным пейджингом и настраиваются, чтобы позволить мне оставлять страницу влево и вправо, чтобы одновременно отображался только один UITableView. Вот диаграмма (взята из Конфликтная прокрутка по UITableView в UIScrollView)
+--visible area--+ ---+
+---------`UIScrollView`---------+---------------+| --+|
| +-------------+ +-------------+|+-------------+|| -+||
| | 0 | | 1 ||| 2 ||| |||
| |`UITableView`| |`UITableView`|||`UITableView`||| equal height
| | | | ||| ||| |||
| +-------------+ +-------------+|+-------------+|| -+||
+--------------------------------+---------------+| --+|
+----------------+ ---+
То, что я хотел бы достичь, - это если пользователь прокручивает вниз представление таблицы, а затем отводит свой палец (и анимация прокрутки вниз все еще происходит), пользователь может выбрать прокрутку влево и вправо, чтобы перейти к следующему табличный вид. Прямо сейчас, если пользователь прокручивает вниз по экрану таблицы, а затем отводит свой палец и, пока анимация прокрутки вниз все еще происходит, а затем снова откладывает палец для прокрутки влево и вправо, он не позволит пользователю прокручивать влево и справа, и я застрял в просмотре уже видимого вида таблицы, если я не жду, когда прокрутка в режиме просмотра стола полностью остановится, а затем проведите пальцем влево и вправо.
TL; DR В принципе, я не могу прокручивать вверх/вниз по таблице и прокручивать влево/вправо в представлении прокрутки одновременно, но я хотел бы иметь возможность сделать это. Пример этого будет в приложении Instagram iOS на вкладке Activity. Вы можете прокручивать вниз, а затем прокручивать вправо, пока просмотр таблицы все еще прокручивается.