2012-12-18 10 views
25

Questa è una situazione in cui spero che qualcuno risponda per dirmi che sono un idiota. Ma continuo a essere stupito dal fatto che jQueryUI drag \ drop non funzioni con i dispositivi touch. Non li ho provati tutti, ma ho provato iphone \ ipad \ android 2, 3 & 4 durante l'ultimo anno e niente. Ho appena provato l'ultima versione su un nuovo Android. Ancora niente. Non credermi, basta visitare la pagina demo su un dispositivo mobile e provare a utilizzare gli esempi drag \ drop. Niente.Come ottenere jQueryUI drag drop che funziona con i dispositivi touch

C'è un problema tecnico o un'incompatibilità di base in gioco qui? Una correzione così facile che non vale la pena scriverla? Gli sviluppatori di jQuery non utilizzano i dispositivi mobili? Ho visto "correzioni" pubblicate qua e là in giro per Stack Overflow ma sono tutti "hack" e tutti quelli che ho provato non funzionano.

Sono perplesso. Qualcuno può far luce su questo problema?

+0

Penso che sia più di un problema di pubblico di destinazione. L'interfaccia utente di jQuery non è stata originariamente scritta per gestire i dispositivi mobili. Non funzionerà nemmeno con jQuery Mobile. alcune parti di esso possono ancora funzionare bene nei dispositivi mobili, ma tutto ciò che ha a che fare con il trascinamento fallirà. –

+0

possibile duplicato di [dispositivo di scorrimento dell'interfaccia utente jQuery Supporto Touch & Drag/Drop su dispositivi mobili] (http://stackoverflow.com/questions/13808663/jquery-ui-slider-touch-drag-drop-support-on-mobile-devices) – Seth

risposta

57

Se si desidera che il codice corrente dell'interfaccia utente jQuery funzioni con gli eventi tattili, è possibile utilizzare la patch per scimmia jQuery UI Touch Punch.

L'unico "problema tecnico o incompatibilità di base" è che jQuery UI (1.x) ascolta solo gli eventi del mouse, non gli eventi di tocco (vedere la risposta di @ ScottGonzales per il motivo storico). jQuery touch punch, sopra, apporta quel cambiamento. Puoi anche provare alcuni degli esempi di interfaccia utente jQuery su quella pagina e funzionano. Generalmente, l'uso di Touch Punch è la soluzione attualmente accettata.

0

Partenza jQTouch

Si tratta di un plugin jQuery che aiuta a colmare le lacune di eventi tra i dispositivi desktop e touch.

25

C'è una lunga storia dietro perché l'interfaccia utente di jQuery non supporta i dispositivi touch, ma si riduce al fatto che Touch Event era un'implementazione specifica di WebKit non standard. A quel tempo, il futuro sembrava squallido. Apple ha brevettato che nessuno voleva avvicinarsi; di conseguenza, Mozilla ha implementato il proprio sistema di eventi touch con flussi che non hanno mai preso piede. Non era chiaro cosa avrebbero fatto Microsoft e Opera. Paul Bakaus (il creatore di jQuery UI) wanted to land iPhone support 4 years ago. Volevo aspettare uno standard ufficiale.

Tempo trascorso, Mozilla ha abbandonato i propri eventi touch e Microsoft ha implementato il proprio sistema di eventi puntatore. Il W3C ha costituito un gruppo di lavoro per standardizzare gli eventi Touch e indagare sui brevetti Apple. Il gruppo di lavoro Touch Events ha pubblicato una raccomandazione e sciolto. Alla fine Microsoft ha presentato una proposta per standardizzare Pointer Events e ora c'è un gruppo di lavoro sugli eventi del puntatore W3C.

Attualmente stiamo lavorando a un device-agnostic rewrite di tutte le interazioni dell'interfaccia utente jQuery che faranno parte dell'interfaccia utente di jQuery 2.0. Fino ad allora, è possibile utilizzare jQuery UI Touch Punch.

All'inizio di quest'anno, ho scritto su una parte della storia di Touch Events e perché Pointer Events offre un futuro migliore. Puoi leggere a riguardo lo jQuery blog.

+8

Eventuali aggiornamenti su questo problema? – Lombas