理解iOS中的touch事件

2012年03月13日chrome插件下载安装

touch事件是iOS中最重要的事件。

一、简介

Apple的官方文档Handling EventsSafari CSS Visual Effects Guide是很好的开发指南,但是里面的内容显然是针对初学者的,我在这里补充一下。

另外,Apple开发者中心有很多不错的HTML5教程与资源,例如HTML5离线存储,CSS动画,CSS 3D变换等,有兴趣的可以了解一下。 http://developer.apple.com/library/safari/navigation/

二、监听touch事件

最简单的办法就是,使用element.addEventListener(touchevent,handler,usercapture)来捕捉事件。touch事件的类型有touchstart , touchmove , touchend , touchcancel。在实际使用中,如果你比较习惯模块式开发,你可以使用如下方式捕捉事件,显得更”优雅”。

三、touch事件的属性

touch事件的重要属性有以下几个:

  • clientX:X轴坐标,相对于viewport,除去滚动。
  • clientY:轴坐标,相对于viewport,除去滚动。
  • screenX:X轴坐标,相对于显示器屏幕。
  • screenY:Y轴坐标,相对于显示器屏幕。
  • pageX:X轴坐标,相对于HTML文档,包括滚动。
  • pageY:Y轴坐标,相对于HTML文档,包括滚动。
  • target:导致此事件发生的元素。
  • identifier:事件的唯一内部ID。

四、多点触摸的奥秘

本文的重点在于此,虽然iOS中提供了gesture event,但是如果我们需要定制自己的手势,还要深入进行研究。touchevent有如下三个属性,记录了从手指接触屏幕,到离开屏幕的全部过程。

  • e.touches:保存你每一个手指落到屏幕上导致的touch事件的信息。
  • e.targetTouches:只保存手指落到同一个元素上导致的touch事件的信息。
  • e.changedTouches:保存导致touch事件发生改变的touch事件信息

五、实例操作

看到这里你可能完全迷糊了,没关系,亲手体验一下下面的例子就明白这三个属性是如何协同工作的了,如果你使用iOS系统,可以使用手指操作下面的白色区域,仔细观察一下,就明白了。

注意:只有手机浏览器上才能看到结果。



关于麦客园

集基督信仰,IT技术,生活的家园,分享生活中的点点滴滴。关注Web前端, iOS, Android, 网络技术, Linux, 开源硬件等。

友情链接




联系麦客园


您的批评和鼓励都是我最大的支持。