2010-08-01 17 views
25

Me preguntaba si la API HTML5 para arrastrar y soltar incluye soporte para pantallas táctiles.HTML5 arrastrar y soltar API en dispositivos de pantalla táctil

Estaba pensando en iPhone, pero sé que aún no es compatible. Me preguntaba si eso solo se está poniendo al día por parte de Apple, para soportar HTML5 arrastrar y soltar en Safari móvil, pero también pensé que tal vez la API HTML5 no era lo suficientemente potente para esto, pero lo dudo mucho.

¿Qué tal en una tableta portátil con pantalla táctil estándar o similar, no tengo una, así que no puedo probar, pero me imagino que se incluye soporte porque, hasta donde yo sé, esa interfaz de tabla simplemente reemplaza control del mouse, por lo tanto, en lo que respecta al navegador, el usuario final simplemente está usando un mouse.

¿Alguna idea?

+7

lo recomiendo cambiar el título de deletrear plenamente 'arrastrar y soltar'. La gente podría pensar que te refieres a 'Dungeons & Dragons'. –

+0

Jaja, tan cierto, ni siquiera sé por qué lo he abreviado, ¡gracias! – Qcom

+1

No estoy seguro de cómo funciona el tacto Sencha exactamente. Pero sí creo que usa HTML5 para habilitar el toque: http://www.sencha.com/products/touch/ – Wolph

Respuesta

8

Hay algunos eventos HTML5 nativos que funcionan en WebKit (Chrome & Safari) ... solo versiones móviles. El nombre de estos eventos se touchstart, touchmove, touchend, touchcancel

Un ejemplo para mover un elemento es:

$(document).bind("touchstart", function(e) { 
e.preventDefault(); 
var orig = e.originalEvent; 
var x = orig.changedTouches[0].pageX; 
var y = orig.changedTouches[0].pageY; 

$("#element").css({top: y, left: x}); 
}); 

Más información: http://developer.apple.com/safari/library/documentation/UserExperience/Reference/TouchEventClassReference/TouchEvent/TouchEvent.html#//apple_ref/javascript/cl/TouchEvent

Por cierto yo prefiero trabajar con webkit transformada (Propiedades de CSS) porque tiene un mejor rendimiento.

Buena suerte

+1

Si bien esta información es útil, realmente no responde la pregunta en cuestión. Usar eventos táctiles sería una solución. – freakTheMighty

+1

No necesito animación, quiero usar colocar algún elemento en otra .. –

+0

La especificación es https://www.w3.org/TR/touch-events/ –

8

hilo viejo, pero ya que tengo un poco de experiencia y todavía es un problema Voy a darle un tiro ...

Touch y arrastrar/soltar realmente no jugar muy bien juntos. Considere que para arrastrar y soltar tiene una secuencia implícita de eventos de mouse-down => mouse-move =>. En un entorno táctil no solo tiene los eventos táctiles, táctiles y táctiles estándar, sino que también tiene gestos reales que tienen significados específicos en varias plataformas. Estos gestos son combinaciones de eventos táctiles, su orden y su sincronización.

Entonces, ¿cómo arrastrarías un elemento usando el tacto? Al capturar el touchstart y touchmove? No. Debido al problema del dedo gordo, casi todos los eventos táctiles tienen un touchstart y un touchmove. También puede tener dos Touchstarts con solo un toque de movimiento ocasionalmente con una pantalla sucia.

¿Qué hay de la captura de inicio táctil y luego esperar para ver si el usuario se ha movido una cierta distancia? No, el problema es que el usuario verá el 'error' cuando ha movido su dedo 15 píxeles (o la distancia) y no pasa nada y luego el elemento de repente se ajusta a la posición de su dedo. La reacción normal es levantar el dedo, que en este escenario iniciaría una caída, la respuesta incorrecta.

Al final, tratar de desarrollar una interfaz donde algunos elementos son estacionarios y otros pueden, pero no tienen que ser, arrastrables está tratando de adaptar un entorno de escritorio a un dispositivo táctil. Los paradigmas no encajan.

Es mejor observar los diversos marcos táctiles y usar los gestos incorporados.

+1

¡¡excelente respuesta !!! – wbarksdale

+7

¿No es * todo * en dispositivos táctiles basado en la noción de ** arrastrar? ** Literalmente tiene que arrastrar un control deslizante antes de poder comenzar a usar su teléfono/tableta (deslizar para desbloquear). Todos los problemas de los que hablas están resueltos. El único problema surge cuando intenta arrastrar un elemento dentro de un área desplazable: ¿está el usuario intentando desplazarse o arrastrar? Solo en ese caso es posible que no pueda usar un "arrastrable", a menos que limite/bloquee el desplazamiento (por ejemplo, solo deslice en el eje Y, arrastre en el eje X) –

Cuestiones relacionadas