Перетаскивание IOS между представлениями прокрутки - PullRequest
7 голосов
/ 16 сентября 2011

Так вот в чем подвох. У меня есть два вида прокрутки, один из которых заполнен 10 нечетными подпредставлениями, которые в основном похожи на игральные карты (пользовательские представления классов). Я хочу иметь возможность перетаскивать некоторые из этих видов на пустую полосу прокрутки, которая у меня есть.

Есть много разных видов между этими двумя видами прокрутки. Поэтому я хочу показать вид, который фактически перетаскивается из одного вида и помещается в другой вид прокрутки. Как мне этого добиться.

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

1 Ответ

7 голосов
/ 01 ноября 2011

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

Ваша иерархия следующая: Вы хотите перетащить представление V из представления A в представление B. Это означает, что когда вы начинаете D & D, V является подпредставлением A, а когда вы заканчиваете, V является подпредставлением B. A и B должны иметь общее суперпредставление. S.

Шаги: 0 / Ваш сенсорный распознаватель должен быть на S, а не на A или B.

1 / Пользователь нажимает на V. Вы удаляете его из A и добавляете его в S в той же позиции (в UIView есть методы для преобразования позиции из вида в другой вид).
2 / Пользователь перетаскивает V в B. Вы меняете положение V в S.
3 / Пользователь отбрасывает V. Если он достаточно близко к B, вставьте его в B (трансформируя позицию S-> B) и анимируйте разницу между позициями. Если он все еще близок к A, анимируйте его обратно к A. Если он находится где-то между A и B, вы можете либо вставить его в ближайший, либо оставить там и заблокировать все другие действия пользователя, пока пользователь снова не нажмет V и не перетянет его в A или Б.

...