技术开发 频道

iphone开发起步的12个技巧

  8. 触摸事件

  当然,在使用iPhone时你可以使用手指代替鼠标,最酷的是支持多点触摸,在iPhone上鼠标事件被触摸事件替代了,包括:

  l touchstart

  l touchend

  l touchmove

  l touchcancel

  当你发出这些事件时,事件监听器将会接收一个event对象,event对象有些重要的熟悉,如:

  l touches – 触摸对象的集合,触摸屏幕的每个手指一个,touch对象有pageX和pageY属性,包含了在页面上触摸的坐标。

  l targetTouches – 和touches类似,但它只登记对目标元素的触摸,而不是整个页面。

  下面的例子是拖放的一个简单实现,我们在空白页面上放一个方框,然后进行拖动,你需要的做的就是订阅touchmove事件,然后随手指移动更新方框的位置,如:

  window.addEventListener('load', function() {

  var b
= document.getElementById('box'),

  xbox
= b.offsetWidth / 2, // half the box width

  ybox
= b.offsetHeight / 2, // half the box height

  bstyle
= b.style; // cached access to the style object

  b.addEventListener(
'touchmove', function(event) {

  event.preventDefault();
// the default behaviour is scrolling

  bstyle.left
= event.targetTouches[0].pageX - xbox + 'px';

  bstyle.top
= event.targetTouches[0].pageY - ybox + 'px';

  },
false);

  },
false);

 

  Touchmove事件监听器首先取消手指移动的默认行为,event.targetTouches集合包括一列每个手指所在的当前div元素的数据,我们只需要关心一个手指,因此我们使用event.targetTouches[0],pageX向我们提供了手指的X坐标,根据这个值减去div宽度的一半,以便手指保留在方框中的中间。

  在例11(链接:http://www.sitepoint.com/examples/iphone-development-12tips/drag.html)中我们将所有代码集中到一起了。

0
相关文章