触摸与手势学习-swift
触摸是一个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("下轻扫")
}
触摸与手势学习-swift的更多相关文章
- T470 Win10下触摸板手势
T470 Win10下触摸板手势 学习了:https://forum.51nb.com/thread-1742490-1-1.html 三指横向竟然是alt+tab 学习了:http://www.xi ...
- Javascript高级编程学习笔记(69)—— 事件(13)触摸与手势事件
触摸与手势事件 由于移动设备既没有鼠标也没有键盘,所以在为移动浏览器开发交互性网页时,常规的鼠标键盘事件根本不够用 所以早期的苹果为Safari 添加了一些与触摸相关的事件 随着后面Android的W ...
- IOS 手势-轻点、触摸、手势、事件
1.概念 手势是从你用一个或多个手指接触屏幕时开始,直到手指离开屏幕为止所发生的所有事件.无论手势持续多长时间,只要一个或多个手指仍在屏幕上,这个手势就存在. 触摸是指把手指放到IOS设备的屏幕上,从 ...
- ios -- 教你如何轻松学习Swift语法(三) 完结篇
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.自动引用计数 1.自动引用计数工作机制 1.1 swift和o ...
- ios -- 教你如何轻松学习Swift语法(二)
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.可选类型(重点内容) 1.什么是可选类型? 1.1在OC开 ...
- ios -- 教你如何轻松学习Swift语法(一)
目前随着公司开发模式的变更,swift也显得越发重要,相对来说,swift语言更加简洁,严谨.但对于我来说,感觉swift细节的处理很繁琐,可能是还没适应的缘故吧.基本每写一句代码,都要对变量的数据类 ...
- 一步一步学习Swift之(一):关于swift与开发环境配置
一.什么是Swift? 1.Swift 是一种新的编程语言,用于编写 iOS 和 OS X 应用. 2.Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制. 3.Sw ...
- iOS手势学习UIGestureRecognizer & cocos2d 手势推荐
iOS手势学习UIGestureRecognizer & cocos2d 手势推荐 手势识别类型: UILongPressGestureRecognizer // 长按UIPanGestur ...
- JavaScript触摸与手势事件
JavaScript触摸与手势事件 发表于 2012-12-10 由 admin iOS版Safari为了向开发人员传达一些特殊信息,新增了一些专有事件.因为iOS设备既没有鼠标也没有键盘,所以在为移 ...
随机推荐
- Handler 接收Parcelable ArrayList时返回空的错误
遇到一个问题,从handler 接收的Parcelable ArrayList返回空,调试发现这个arraylist生成的时候是有值的,传到handler就没值了 赋值的代码 new Thread(n ...
- 优化 Android 线程和后台任务开发
在 Android 开发中,你不应该做任何阻碍主线程的事情.但这究竟意味着什么呢?在这次海湾 Android 开发者大会讲座中,Ari Lacenski 认为对于长时间运行或潜在的复杂任务要特别小心. ...
- C++类中静态变量和静态方法使用介绍!
原链接:http://www.ecoviews.cn/net/archives/216.html 静态成员的提出是为了解决数据共享的问题.实现共享有许多方法,如:设置全局性的变量或对象是一种方法.但是 ...
- BNU29368:Check the Identity(栈)
Just determine whether an algebraic expression can always simplify to zero. Input The first line con ...
- GAC的理解及其作用
转:http://www.cnblogs.com/smallstone/archive/2010/06/29/1767508.html 一.GAC的作用 全称是Global Assembly Cach ...
- web测试中,各类web控件测试点总结
一 .界面检查 进入一个页面测试,首先是检查title,页面排版,字段等,而不是马上进入文本框校验 1.页面名称title是否正确 2.当前位置是否可见 您的位置:xxx>xxxx 3.文字格 ...
- ldconfig及 LD_LIBRARY_PATH
dconfig及 LD_LIBRARY_PATH 1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library ...
- JavaScript constructors, prototypes, and the `new` keyword
Are you baffled(阻碍:使迷惑) by the new operator in JavaScript? Wonder what the difference between a func ...
- lab 1实验报告
练习1:理解通过make生成执行文件的过程. 1.操作系统镜像文件ucore.img是如何一步一步生成的? 生成 bin/kern 部分 生成 init.o 生成 readline.o 生成 stdi ...
- java 日志技术汇总(log4j , Commons-logging,.....)
前言 在Tomcat 与weblogic 中的 日志(log4j) 配置系列一 在系列一 中, 有一个问题一直没有解决,就是部署到weblogic 中应用程序如何通过log4j写日志到文件中? 这里仅 ...