Acabo de comenzar a buscar un desarrollo web móvil básico en Android y un script de prueba para investigar los eventos táctiles. He ejecutado el siguiente código en el emulador de Android, y el evento touchend nunca se dispara. Puede alguien decirme por que ?touchend event no funciona en Android
He intentado en tres versiones del emulador (1.6, 2.1 y 2.2) y las tres se comportan de la misma manera.
Gracias de antemano por cualquier ayuda que pueda darme.
Saludos, Colm
EDITAR - También he intentado esto con el marco XUI y tienen el mismo problema, así que supongo que tengo un malentendido fundamental de cómo funciona esta cosa ......
Mapa prueba
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="language" content="english" />
<meta name="viewport" content="minimum-scale=1.0,
width=device-width,
height=device-height,
user-scalable=no">
<script type="text/javascript">
window.onload = function(){
document.body.appendChild(
document.createTextNode("w: " + screen.width + " x " + "h : " +screen.height)
);
attachTouchEvents();
}
function attachTouchEvents() {
console = document.getElementById("console");
var map = document.getElementById("map");
map.addEventListener ('touchstart', function (event) {
event.preventDefault();
var touch = event.touches[0];
document.getElementById("touchCoord").innerHTML = "S : " + touch.pageX + " " + touch.pageY;
document.getElementById("touchEvent").innerHTML = "Touch Start";
}, false);
map.addEventListener ('touchmove', function (event) {
event.preventDefault();
var touch = event.touches[0];
document.getElementById("touchCoord").innerHTML = "M : " + touch.pageX + " " + touch.pageY;
document.getElementById("touchEvent").innerHTML = "Touch Move";
}, false);
map.addEventListener ('touchend', function (event) {
var touch = event.touches[0];
document.getElementById("touchCoord").innerHTML = "E : " + touch.pageX + " " + touch.pageY;
document.getElementById("touchEvent").innerHTML = "Touch End";
event.preventDefault();
}, false);
console.innerHTML = "event attached";
}
</script>
<style type="text/css">
html, body {
height:100%;
width:100%;
margin: 0;
background-color:red;
}
#map {
height: 300px;
width: 300px;
background-color:yellow;
}
</style>
</head>
<body>
<div id="map"></div>
<div id="touchCoord">Touch Coords</div>
<div id="touchEvent">Touch Evnt</div>
<div id="console">Console</div>
</body>
I' No estoy seguro de cómo estás tratando de hacer esto. Cuando dijiste que lo probaste con el emulador, ¿qué quisiste decir? ¿Estás ejecutando una aplicación de Android (por ejemplo, una "Actividad" que utiliza varias "Vistas") o estás accediendo a una página web con el navegador Android? Si está escribiendo una aplicación real de Android, tenga en cuenta que 'WebView' no funciona bien con las devoluciones de llamada' onTouchEvent'. Su sistema integrado para desplazarse en una página más grande que la pantalla entra en conflicto con 'MotionEvent's para que tengas un comportamiento incoherente. –
Estoy obteniendo esto también en una tableta Android de 7 pulgadas, el evento 'touchend' nunca se dispara .. vea http://code.google.com/p/android/issues/detail?id=19827#makechanges –