Начало движения touchsMoved/UIPanGestureRecognizer в середине хода для нового представления
Концепция заключается в том, что пользователь нажимает на значок на виде, копия значка появляется под пальцем пользователя, и они могут перетаскивать его, пока не поднимут палец. Для этого я хочу следующее
- значок имеет сенсорное событие
- добавить прозрачный весь экран UIView и вставить UIImageView, содержащий значок на нем.
- отслеживать touchMoves или uiPanGestureRecognizer и перемещать UIImageView до тех пор, пока
Проблема в том, что touchMoves (и uiPanGestureRecognizer) не отслеживают, пока пользователь не поднимает палец и не опускает его обратно. то есть то, что происходит:
- значок имеет сенсорное событие
- добавить прозрачный весь экран UIView и добавить подпредставление UIImageView, содержащее значок на нем.
- пользователь тащит палец и ничего не происходит, поэтому они поднимают палец и снова тянут
- отслеживать touchMoves или uiPanGestureRecognizer и перемещать UIImageView до тех пор, пока
По-видимому, для того, чтобы UIView мог распознать перетаскивание, он, похоже, должен быть создан внутри UIView. Я пытался (наивно) просто отправить событие приземления в прозрачный вид, но оно не работает.
Есть другие идеи?
большое спасибо...
2 ответа
Хитрость заключается в том, чтобы использовать один UIPanGestureRecognizer. Добавьте один к своему оригинальному значку (UIView) и используйте его, чтобы обнаружить начальное прикосновение и начало кастрюли. Когда UIPanGestureRecognizer входит в UIGestureRecognizerStateBegan, создайте представление, которое будет анимировать перетаскивание. Исходный вид значка и обработчик будут продолжать получать обратные вызовы. Вы можете проверить UIGestureRecognizerStateChanged и перевести новый движущийся вид из исходного обработчика.
Насколько я могу судить, вы не можете начать перетаскивание с любого вида, кроме того, на котором было инициировано перетаскивание. Для тех, у кого есть доступ, взгляните на проект автоматической прокрутки WWDC 2010. Они в основном начинают перетаскивание в представлении ячейки таблицы, а затем позволяют перетаскивать эту TableCell из представления таблицы. Это работает хорошо и, вероятно, будет тем маршрутом, по которому я буду идти.