Jak skonfigurowałbyś zdarzenia dotykowe do klasy przeciągalnej, aby działał na iOS (iPad, iPhone itp.)? Przeczytałem How can I make a jQuery UI 'draggable()' div draggable for touchscreen?, który ma wiele opcji dla jQuery, ale nie wiem, jak zastosować to do Scriptaculous. Każda pomoc będzie doceniona. Dzięki.Scriptaculous można przeciągnąć na iOS
5
A
Odpowiedz
5
Można to zrobić poprzez edycję dragdrop.js jako wzmianki here:
W Draggables:
register: function(draggable) {
if(this.drags.length == 0) {
this.eventMouseUp = this.endDrag.bindAsEventListener(this);
this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
this.eventKeypress = this.keyPress.bindAsEventListener(this);
Event.observe(document, "mouseup", this.eventMouseUp);
Event.observe(document, "mousemove", this.eventMouseMove);
Event.observe(document, "keypress", this.eventKeypress);
Event.observe(document, "touchstart", this.eventKeypress);
Event.observe(document, "touchmove", this.eventMouseMove);
Event.observe(document, "touchend", this.eventMouseUp);
}
this.drags.push(draggable);
},
unregister: function(draggable) {
this.drags = this.drags.reject(function(d) { return d==draggable });
if(this.drags.length == 0) {
Event.stopObserving(document, "touchstart", this.eventKeypress);
Event.stopObserving(document, "touchmove", this.eventMouseMove);
Event.stopObserving(document, "touchend", this.eventMouseUp);
Event.stopObserving(document, "mouseup", this.eventMouseUp);
Event.stopObserving(document, "mousemove", this.eventMouseMove);
Event.stopObserving(document, "keypress", this.eventKeypress);
}
},
W Draggable:
initialize:
...
this.eventMouseDown = this.initDrag.bindAsEventListener(this);
Event.observe(this.handle, "mousedown", this.eventMouseDown);
Event.observe(this.handle, "touchstart", this.eventMouseDown);
Draggables.register(this);
},
destroy: function() {
Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);
Event.stopObserving(this.handle, "touchstart", this.eventMouseDown);
Draggables.unregister(this);
},
...
initDrag: function(event) {
if(!Object.isUndefined(Draggable._dragging[this.element]) &&
Draggable._dragging[this.element]) return;
if(Event.isLeftClick(event) || event.type == "touchstart") {
Wraz z prototype.js edycji:
function pointerX(event) {
var docElement = document.documentElement,
body = document.body || { scrollLeft: 0 };
if (event.changedTouches) return (event.changedTouches[0].clientX +
(docElement.scrollLeft || body.scrollLeft) -
(docElement.clientLeft || 0));
return event.pageX || (event.clientX +
(docElement.scrollLeft || body.scrollLeft) -
(docElement.clientLeft || 0));
}
function pointerY(event) {
var docElement = document.documentElement,
body = document.body || { scrollTop: 0 };
if (event.changedTouches) return (event.changedTouches[0].clientY +
(docElement.scrollTop || body.scrollTop) -
(docElement.clientTop || 0));
return event.pageY || (event.clientY +
(docElement.scrollTop || body.scrollTop) -
(docElement.clientTop || 0));
}
0
Myślę, że musisz użyć funkcji parseInt dla współrzędnych X, Y, ponieważ mam problem z przeglądarką Chrome na Androidzie - do współrzędnych wprowadzono coś w rodzaju 23.45435435345345345345345.
//Add parseInt ----------------[start]
if (event.changedTouches) return (parseInt(event.changedTouches[0].clientY +
(docElement.scrollTop || body.scrollTop) -
(docElement.clientTop || 0),10));
//Add parseInt ----------------[end]
Powiązane problemy
- 1. Nie można przeciągnąć i upuścić do Eclipse
- 2. Nie można przeciągnąć plików do Eksploratora rozwiązań
- 3. Swing: Tworzenie komponentu, który można przeciągnąć ...?
- 4. Programowo przeciągnąć UITableViewCell?
- 5. komponent reacty, który można przeciągnąć i zmienić rozmiar
- 6. Nie można przeciągnąć elementu przycisku w przeglądarce Firefox
- 7. Nie można przeciągnąć procedury przechowywanej do projektanta DBML
- 8. Nie można przeciągnąć UITableViewCell z aktualnej pozycji po zmianie
- 9. Czy FlashDevelop można wdrożyć na iOS?
- 10. Dlaczego nie można przeciągnąć punktu wykonywania w IntelliJ (można w Visual Studio)
- 11. jak przeciągnąć i upuścić aktorów na libgdx scene2d?
- 12. Jak przeciągnąć i upuścić przycisk z jednego panelu na inny?
- 13. Jak przeciągnąć siatkę z jednego gridsteru na inny gridster?
- 14. Scenariusz ipad w xcode nie może przeciągnąć przycisku
- 15. jak przeciągnąć z przewijanego elementu div do obiektu droppable, a następnie przeciągnąć ponownie?
- 16. Jak przeciągnąć i upuścić wiersz w JTable?
- 17. Jak przeciągnąć płótno z "klonem" pomocnika?
- 18. Jak przeciągnąć i upuścić nagłówek kolumny DataGrid?
- 19. Związany widok, aby przeciągnąć wewnątrz RelativeLayout
- 20. Konwersja Java na iOS
- 21. Znacznik ulotki nie jest przeciągalny, nawet jeśli można go przeciągnąć = true
- 22. Czy można usunąć plik z pakietu aplikacji na iOS?
- 23. Czy można używać dźwięków systemu Apple w aplikacji na iOS?
- 24. Czy można używać apl Tłumacza Google na iOS?
- 25. Czy można skompilować aplikację/grę Sprite Kit na iOS 6?
- 26. Nie można dodać testów jednostek do istniejącej aplikacji na iOS.
- 27. Nie można utworzyć aplikacji na iOS w Xcode 6
- 28. Czy można wygenerować listę podłączonych urządzeń bluetooth na iOS?
- 29. Nie można zalogować się w gamecentrum Sandbox na iOS 7
- 30. Czy można teraz nagrywać ekran na iOS 11?
, które zasługiwały na wyższy głos. przepraszam, ale musiałem wspomnieć o dobrym użyciu prostej manipulacji metodami, jeśli tak, ale czy nie byłoby to uważane za edytowanie podstawowej funkcjonalności? jeśli możesz mi pomóc zdecydować, mogę przejść do prototypu w innej aplikacji i to jedyne miejsce, w którym mógłbym znaleźć kogoś, kto o tym mówił. Powinien dobrze pracować, dać mu wir i zobaczyć, jak wysoko mogę podnieść go do centralnej gwiazdy. :-) – blamb