触摸是一个UITouch对象,该对象放在一个UIEvent中,每个UIEvent包含一个或多个UITouch对象,每个UITouch对象对应一个手指。系统将UIEvent发送到应用程序上,最后应用程序将UIEvent传递给当前的一个UIView。

触摸分为5个阶段:

1)Began

2)Moved

3)Stationary

4)Ended

5)Cancelled(比如收到电话)

//触摸事件

    //手指首次触摸到屏幕
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { print("touchesBegan") //获取touches数量
let numTouches = touches.count //获取点击屏幕的次数
let tapTouches = (touches as NSSet).anyObject()?.tapCount //获取事件发生时间
let timestamp = event!.timestamp //获取当前相对于self.view的坐标
let locationPoint = (touches as NSSet).anyObject()?.locationInView(self.view) //获取上一次相对于self.view的坐标
let previousPoint = (touches as NSSet).anyObject()?.previousLocationInView(self.view) //允许使用手势
self.view.userInteractionEnabled = true //支持多点触摸
self.view.multipleTouchEnabled = true print("\(tapTouches)") //判断如果有两个触摸点
if touches.count ==
{
//获取触摸集合
let twoTouches = (touches as NSSet).allObjects //获取触摸数组
let first:UITouch = twoTouches[] as! UITouch //第1个触摸点
let second:UITouch = twoTouches[]as! UITouch //第2个触摸点 //获取第1个点相对于self.view的坐标
let firstPoint:CGPoint = first.locationInView(self.view) //获取第1个点相对于self.view的坐标
let secondPoint:CGPoint = second.locationInView(self.view) //计算两点之间的距离
let deltaX = secondPoint.x - firstPoint.x;
let deltaY = secondPoint.y - firstPoint.y;
let initialDistance = sqrt(deltaX*deltaX + deltaY*deltaY ) print("两点间距离是:\(initialDistance)")
}
} //手指在移动
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { print("touchesMoved")
} //触摸结束
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { print("touchesEnded")
} //触摸意外终止
//模拟器演示:鼠标拖动的同时,按键盘command+shift+h 相当于点击手机home键,退出应用,触发touchesCancelled事件,在打电话、等情况下也会触发
override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) { print("touchesCancelled")
}

手势UIGestureRecognizer:

UITapGestureRecognizer

UIPanGestureRecognizer

UILongPressGestureRecognizer

UIPinchGestureRecognizer

UISwipeGestureRecognizer

        //点击事件
let atap = UITapGestureRecognizer(target: self, action: "tapDo:")
self.view.addGestureRecognizer(atap)
atap.numberOfTapsRequired = //单击次数
atap.numberOfTouchesRequired = //手指个数 //拖动事件
let aPan = UIPanGestureRecognizer(target: self, action: "handlenPan:")
self.view.addGestureRecognizer(aPan)
aPan.minimumNumberOfTouches = //最少手指个数
aPan.maximumNumberOfTouches = //最多手指个数 //长按事件
let aLongPress = UILongPressGestureRecognizer(target: self, action: "longPress:")
self.view.addGestureRecognizer(aLongPress)
aLongPress.minimumPressDuration = //需要长按的时间,最小0.5s //捏合事件
let aPinch = UIPinchGestureRecognizer(target: self, action: "pinchDo:")
self.view.addGestureRecognizer(aPinch) //旋转事件
let aRotation = UIRotationGestureRecognizer(target: self, action: "rotatePiece:")
self.view.addGestureRecognizer(aRotation) //轻扫事件--左轻扫
let leftSwipe = UISwipeGestureRecognizer(target: self, action: "leftSwipe:")
self.view.addGestureRecognizer(leftSwipe)
leftSwipe.direction = UISwipeGestureRecognizerDirection.Left //轻扫事件--右轻扫
let rightSwipe = UISwipeGestureRecognizer(target: self, action: "rightSwipe:")
self.view.addGestureRecognizer(rightSwipe)
rightSwipe.direction = UISwipeGestureRecognizerDirection.Right //轻扫事件--上轻扫
let upSwipe = UISwipeGestureRecognizer(target: self, action: "upSwipe:")
self.view.addGestureRecognizer(upSwipe)
upSwipe.direction = UISwipeGestureRecognizerDirection.Up //轻扫事件--下轻扫
let downSwipe = UISwipeGestureRecognizer(target: self, action: "downSwipe:")
self.view.addGestureRecognizer(downSwipe)
downSwipe.direction = UISwipeGestureRecognizerDirection.Down
 //手势

     //点击事件
func tapDo(sender:UITapGestureRecognizer)
{ print("点击事件")
} //拖动事件
func handlenPan(sender:UIPanGestureRecognizer)
{
print("拖动事件") if sender.state == .Began
{
//拖动开始
}
else if sender.state == .Changed
{
//拖动过程
}
else if sender.state == .Ended
{
//拖动结束
}
} //长摁事件
func longPress(sender:UILongPressGestureRecognizer)
{
print("长摁事件") } //捏合事件
func pinchDo(sender:UIPinchGestureRecognizer)
{
print("捏合")
} //旋转事件
func rotatePiece(sender:UIRotationGestureRecognizer)
{
print("旋转")
} //轻扫事件--左轻扫
func leftSwipe(sender:UISwipeGestureRecognizer)
{
print("左轻扫")
} //轻扫事件--右轻扫
func rightSwipe(sender:UISwipeGestureRecognizer)
{
print("右轻扫")
} //轻扫事件--上轻扫
func upSwipe(sender:UISwipeGestureRecognizer)
{
print("上轻扫")
} //轻扫事件--下轻扫
func downSwipe(sender:UISwipeGestureRecognizer)
{
print("下轻扫")
}

最新文章

  1. Docker容器基础知识学习
  2. Attribute在.net编程中的应用
  3. JavaScript面试库
  4. HDU 3932
  5. Ignoring HTTPS certificates
  6. 基于BaseHTTPServer的简单存储服务器
  7. asp.net中的App_GlobalResources和App_LocalResources使用
  8. 关键在封装并发出了帧-IP冲突也无所谓
  9. java学习多线程之线程状态
  10. 用vscode写博客和发布
  11. 10.31 morning
  12. Ruby自学笔记(二)— Ruby的一些基础知识
  13. 使用Transaction访问数据库(C#,TransactionScope,.NET 2.0)
  14. TextView的跑马灯效果实现
  15. iOS 传感器集锦
  16. 代码之髓读后感——名字&amp;作用域&amp;类型
  17. Android截图命令screencap与视频录制命令screenrecord
  18. boost-字符编码转换:使用conv
  19. Fabric密码保存
  20. 【beta】Scrum站立会议第4次....11.6

热门文章

  1. 转载:10个实用的但偏执的Java编程技术
  2. find和findstr
  3. XCode中Architecturs配置及常见问题
  4. MySql定位执行效率较低的SQL语句
  5. net 内存泄露和内存溢出
  6. boost总结之any
  7. 洛谷P1220 关路灯
  8. sql执行计划
  9. HW4.11
  10. Java到底是不是一种纯面向对象语言?