Я использую react-native
для разработки Android. У меня есть представление, по которому, если пользователь делает длинный пресс, я хочу показать анимированный просмотр, который можно перетащить. Я мог бы достичь этого, используя PanResponder
, который отлично работает.реагировать на изменение ответа динамически
Но то, что я хочу сделать, - это когда пользователь делает длинное нажатие, пользователь должен иметь возможность продолжить одно и то же нажатие/нажимать и перетаскивать только что появившийся Animated.View.
Если вы знакомы с приложением Google drive, у него аналогичная функциональность. Когда пользователь нажимает любой элемент в списке, он показывает перетаскиваемый элемент. Пользователь может перетащить элемент сразу.
Я думаю, если бы я мог изменить Responder
динамически на перетаскиваемом пункта после того, как он начинает показывать, то это будет работать.
Вопрос является
ли реагировать родной обеспечить способ изменить ответчику динамически?
То, что я пытался до сих пор
Я попытался с изменением логики
onStartShouldSetPanResponderCapture
,onMoveShouldSetPanResponderCapture
,onMoveShouldSetPanResponder
,onPanResponderTerminationRequest
так, что как только перетаскивать элемент начинает показывать вид контейнера не должен захватить начало и перемещать и принимать запрос на завершение, также возвращающий false для запроса завершения перетаскиваемого элемента, а возврат true к нему должен записывать события.Один рабочий процесс, который работает для меня, - это показать перетаскиваемый элемент на верхней части контейнера с меньшей непрозрачностью и сохранить его как ложный. Как только пользователь нажимает на него, я меняю непрозрачность, чтобы он был отчетливо заметен. При таком подходе пользователь может продолжить касание, чтобы перетащить элемент. Но контейнер - это строка списка. Таким образом, мне нужно будет создать много перетаскиваемых объектов, поскольку пользователь может долго нажимать на любую строку.
Но я думаю, что это нехорошее решение, и если бы я мог изменить ответчика, было бы здорово.
Связанный: https://github.com/facebook/react-native/issues/7941 – mquandalle