Перетаскивание IOS между представлениями прокрутки

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

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

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


person SeriousSam    schedule 16.09.2011    source источник
comment
да, извините, что это действительно «iOS» :)   -  person SeriousSam    schedule 19.09.2011
comment
Ни у кого нет на это ответов???   -  person SeriousSam    schedule 22.09.2011
comment
Я удивлен, что никто не сталкивался с таким требованием раньше.   -  person SeriousSam    schedule 28.09.2011
comment
Можете ли вы предоставить мне пример кода?   -  person M.B    schedule 14.02.2013


Ответы (1)


Это очень легко. 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 или Б.

person Sulthan    schedule 01.11.2011
comment
Спасибо, Султан, я уже реализовал аналогичный фрагмент кода. Просто забыл обновить здесь статус :) Но как заблокировать все другие взаимодействия с пользователем и просто включить его на V?? - person SeriousSam; 02.11.2011
comment
Только один вопрос. Я использую кучу этих небольших представлений и хотел, чтобы одновременно я взаимодействовал только с одним из них. То есть многократных перетаскиваний быть не должно. Они случаются в IPAD. Как мне решить это??? - person SeriousSam; 02.11.2011
comment
Возможность a/ Прежде чем начать перетаскивание, проверьте, нет ли уже перетаскиваемых видов. b/ Просто заблокируйте все остальные компоненты, когда начнете перетаскивать. - person Sulthan; 02.11.2011