#android #ios #angular #ionic-framework #electron
#Android #iOS #angular #ionic-framework #electron
Вопрос:
У меня есть приложение Ionic, которое встроено в angular, и, следовательно, в нем есть перетаскивание angular cdk для изменения порядка списка. Перетаскивание отлично работает, однако на мобильных устройствах я вообще не могу прокручивать. Я считаю, что жесты перетаскивания поглощают мои жесты прокрутки.
Я попытался установить для cdkDragStartDelay значение 5000 (миллисекунды):
<cu-task-row
cdkDrag
[cdkDragData]="task"
[cdkDragStartDelay]="5000"
Это задерживает перетаскивание, но я все еще не могу прокручивать.
Возможно ли прокручивать и реализовывать перетаскивание в мобильных устройствах с использованием Angular cdk?
Комментарии:
1. У меня такая же проблема, вы нашли решение? Спасибо
2. нет, к сожалению, я этого не сделал. жаль, что cdkDrag не подходит для мобильных устройств
3. Я предлагаю вам использовать пользовательский дескриптор перетаскивания для элементов списка.
4. Кажется, есть проблема с задержкой перетаскивания и прокруткой: github.com/angular/components/issues/16614
Ответ №1:
Единственное решение (если вы остаетесь с cdk) заключается в том, что если вы перейдете на последнюю версию Angular Material (^ 8.1.0).
Cdk DragDrop (Material) 7 и ранняя версия 8 блокируют прокрутку при перетаскивании (https://github.com/angular/components/issues/14273#issuecomment-442201350 ). Однако это уже решено с помощью функции автоматической прокрутки в ^ 8.1.0 (https://github.com/angular/components/issues/13588 ).
Итак, если вы перейдете вверх, вы можете опробовать новую функцию автопрокрутки, которая работает с простыми контейнерами (такими как div), которые хорошо закрываются, кроме того, включена прокрутка с помощью колесика мыши, но я пока не смог заставить ее работать с таблицей материалов (не было такого большого исследования).
Если вы создадите онлайн-пример, я мог бы попытаться помочь вам больше.
Ответ №2:
Если вы запускаете прокрутку из-за пределов элементов перетаскивания, и это все еще не работает, вам следует проверить CSS. В частности, в таких свойствах, как положение и отображение. При неправильной настройке они могут привести к некоторым неожиданным результатам при прокрутке
Ответ №3:
Если вы хотите, чтобы прокрутка выполнялась вертикально, вы можете сделать это, используя angular material версии 8. Эта функция добавлена в angular версии 8.
также вы можете столкнуться с проблемой по горизонтали, я решил ее путем внедрения документа и использования идентификатора контейнера
import { DOCUMENT } from '@angular/common';
import {Inject } from '@angular/core';
constructor(@Inject(DOCUMENT) private document: Document) {}
onDragMoved(event) {
if (event.delta.x === 1) {
this.document.getElementById('container').scrollLeft = 10;
} else {
this.document.getElementById('container').scrollLeft -= 10;
}
}
Ответ №4:
Я просмотрел эти документы на своем планшете, просто чтобы попробовать, и я могу прокручивать, пока я инициирую прокрутку извне элементов перетаскивания. Вы пробовали добавлять пустое пространство вокруг элементов перетаскивания, чтобы посмотреть, сможете ли вы инициировать прокрутку?