Событие нажатия работает нормально при использовании мыши с компьютером. Даже когда я нажимаю кнопку мыши на кнопку перемещения курсора, а затем отпускаю кнопку мыши в области кнопок, событие нажатия срабатывает. Но то же самое с сенсорным экраном это не работает. Я знаю, что причина в том, что на сенсорном экране такое перетаскивание считается прокруткой. Событие щелчка срабатывает, когда я не слишком много двигаю пальцем по кнопке. Так что только вниз и вверх без движения. У моего клиента проблема в том, что он слишком сильно двигает пальцем и слишком сложно получить событие щелчка. Можно ли установить больший порог для того, сколько пальцев может двигаться, чтобы он все еще считался щелчком, а не прокруткой?
Я нашел эту статью, где сенсорные события обрабатываются самостоятельно, и переводил их в событие щелчка. http://phonegap -tips.com / Articles / fast-touch-обработка событий-устранение-click-delay.html Я бы не хотел идти по этому пути.
Есть ли у вас какие-либосовет, как я могу решить эту проблему?
Вот более подробно о событиях касания https://developer.mozilla.org/en-US/docs/Web/API/Touch_events Посмотрите на Обработка нажатий, там описано, как щелчок работает на сенсорных экранах. Тем не менее мне не удалось работать. Несколько месяцев назад я но evt.preventDefault();
обратился к своему обработчику событий touchmove, и это действительно исправило проблему, но в настоящее время это не так. :
html
<body (touchmove)="touchMoveEvent($event)"></body>
TypeScript
touchMoveEvent(ev: Event): void
{
ev.preventDefault();
}
А вот базовый угловой пример обработчика кнопки и щелчка, который не работает, если пользователь слишком сильно двигает пальцем. Я не проверял, что такое порог, но я полагаю, что это что-то около 10px-20px.
<button (click)="onClickEventHandler($event)">Press button</button>
onClickEventHandler(ev: Event) {
//do the thing here
}
Я проверил функциональность сенсорного экрана с помощью панели инструментов устройства Chrome devtools.