Почему создание пути paper.js не работает на устройствах iOS?

** См. Edit 2 для текущего решения этой проблемы. **

У меня есть несколько неясная проблема, которую Google и поиск через StackOverflow еще не решили. Paper.js не работает через iOS.

В настоящее время я создаю веб-приложение для рисования на доске, которое использует paper.js для функциональности рисования. Он отлично работает на рабочем столе в Chrome, FireFox и Safari. На Android-устройствах работает нормально, но тормозит. Проблема возникает при использовании приложения на устройствах iOS.

По какой-то причине мое приложение не может создавать пути при использовании его на iOS через мобильный Safari или мобильный Chrome. Поведение на iOS — это просто неотзывчивый холст.

В настоящее время у меня нет доступа к устройству, которое я мог бы использовать для удаленной отладки, поэтому я не могу собрать какие-либо полезные данные для отладки.

Ссылка на веб-приложение для тестирования. http://alexpersian.github.io/html/whiteboard.html

Фрагмент кода paperscript, задействованный в рисовании.

var myPath;

function onMouseDown(event) {
    myPath = new Path();
    myPath.add(event.point);
    myPath.strokeColor = WBAPP.penColor; // WBAPP is from main Javascript
    myPath.strokeWidth = WBAPP.penStroke;
    myPath.strokeCap = 'round';
}

function onMouseDrag(event) {
    myPath.add(event.point);
}

function onMouseUp(event) {
    myPath.simplify();
}

Изменить: я провел дополнительное тестирование и обнаружил, что он работает на устройствах под управлением iOS 7, но не iOS 8. Мне любопытно, было ли изменение в iOS 8, которое ограничивало веб-взаимодействие touchEvents.

Редактировать 2: я смог решить эту проблему, добавив этот фрагмент кода.

document.addEventListener('touchmove', function(event) {
    event.preventDefault();
}, false);

Это предотвращает действие касания по умолчанию в iOS 8, которое кажется действием прокрутки/панорамирования, потому что оно мешает событию onMouseDrag из paper.js.

Юрг Лени, один из создателей paper.js, изучает, следует ли включить это в саму библиотеку. До тех пор этот фрагмент должен помочь.


person Alex Persian    schedule 21.11.2014    source источник


Ответы (1)


Эй, вероятно, вам нужно будет реализовать сенсорные события, которые вы можете использовать http://labs.rampinteractive.co.uk/touchSwipe/demos/ или http://www.homeandlearn.co.uk/JS/html5_canvas_touch_events.html

person Człowiek Fin Śpiewak    schedule 21.11.2014
comment
Эй, спасибо за ответ. Раньше я не занимался разработкой iOS, но у меня было ощущение, что это как-то связано с разницей в событиях касания. Я рассмотрю обработку сенсорных событий iOS. Я бы предпочел не запускать плагин jQuery только для этого, но если это единственный способ, я пойду по этому пути. - person Alex Persian; 21.11.2014