Я разрабатываю приложение iPhone/iPad, которое поддерживает перетаскивание элементов между табличными представлениями. Поскольку все таблицы не подходят на экране, я написал пользовательский UIScrollView
, который выставляет их горизонтально и поддерживает подкачку.Разделение сенсорной последовательности между несколькими экземплярами UIGestureRecognizer
Хотя я получил основное перетаскивание вместе, есть несколько оставшихся проблем, которые я не могу пройти.
После того как пользователь выбрал элемент для перетаскивания и перетаскивание, они не могут прокручивать
UIScrollView
, чтобы найти пункт назначенияUITableView
.Иногда пользователь будет перетаскивать элемент в пределах тот же вид таблицы. Но как только началось перетаскивание, представление таблицы больше не распознает жест прокрутки.
Я пробовал различные варианты, в том числе реализации UIGestureRecognizerDelegate
и позволяет несколько распознования жестов распознавать жесты одновременно.
Проблема, как я вижу, проистекает из этого описания из руководства по обработке событий: «iOS распознает один или несколько пальцев, касаясь экрана как часть последовательности мультитач. Эта последовательность начинается, когда первый палец касается экрана на экране и заканчивается, когда последний палец поднимается с экрана ».
UIGestureRecognizer
экземпляры всегда соответствуют всем целям . В моем случае я хочу разделить одну последовательность вниз на дискретные жесты - некоторые касания распознают перетаскивание элемента, в то время как разные штрихи в одной и той же последовательности должны распознаваться как жесты прокрутки или прокрутки. Фактически, я хочу, чтобы мои распознаватели жеста распознавали одновременно, но только разные касается. Когда человек признает прикосновение как часть жестов, это прикосновение должно игнорироваться другими.
Я не нашел способ решить все эти проблемы когерентно, используя подклассы по умолчанию UIGestureRecognizer
, и теперь я собираюсь написать собственный пользовательский признак распознавания жестов.
Я бы предпочел, чтобы не было - есть ли более подходящий способ достижения такого же результата?