触摸事件:

UITouch:一个手机第一次点击屏幕,会形成一个UITouch对象,知道离开销毁。表示触碰。UITouch对象能表明当前手指触碰的屏幕位置、状态,状态分为开始触碰、移动、离开。

具体方法介绍如下:

1.override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)

通知调用者当有一个或者多个手指触摸到了视图或者窗口时触发次方法,touches是UITouch的集合,通过uito我们可以检测触摸事件的属性,是单击还是双击,还有触摸的位置等。

2.override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)

告诉接受者一个或者多个手指在视图或者窗口上触发移动事件。默认不允许多点触摸,如果要接受多点触摸事件必须将UIVIew属性置为true。

//支持多点触摸
self.view.isMultipleTouchEnabled = true

3.override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)

当一个触摸事件结束时发出的UITouch实例对象

4.override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?)

通知接受者当系统发出取消事件的时候(如第内存消耗时的警告框)

样例代码:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch:AnyObject in touches {
let t:UITouch = touch as! UITouch
//当在屏幕上连续拍动两下时,背景回复为白色
if t.tapCount ==
{
self.view.backgroundColor = UIColor.white
}else if t.tapCount ==
{
self.view.backgroundColor = UIColor.blue
}
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
//获取点击的坐标位置
for touch:AnyObject in touches {
let t:UITouch = touch as! UITouch
print(t.location(in: self.view))
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
if touches.count ==
{
//获取触摸点
let first = (touches as NSSet).allObjects[] as! UITouch
let second = (touches as NSSet).allObjects[] as! UITouch
//获取触摸点坐标
let firstPoint = first.location(in: self.view)
let secondPoint = second.location(in: self.view)
//计算两点间的距离
let deltaX = secondPoint.x - firstPoint.x
let deltaY = secondPoint.y - firstPoint.y
let initialDistance = sqrt(deltaX + deltaY * deltaY)
print("两点间的距离:\(initialDistance)")
//计算两点间的角度
let height = secondPoint.y - firstPoint.y
let width = firstPoint.x - secondPoint.x
let rads = atan(height/width)
let degrees = 180.0 * Double(rads) / .pi
print("两点间角度:\(degrees)")
}
}
override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
print("event canceled!")
}

swift--触摸(UITouch)事件(点击,移动,抬起)的更多相关文章

  1. quick-cocos2d-x游戏开发【10】——触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT

    假设看过sample中touch的代码,你会发现演示样例中有一个cc.NODE_TOUCH_CAPTURE_EVENT事件.它和cc.NODE_TOUCH_EVENT触摸事件一样,是引擎级别的事件,我 ...

  2. swift 触摸与手势

    class MyView: UIView { var lView:UIView! var time:NSTimer! override init(frame: CGRect) { super.init ...

  3. WPF 触摸到事件

    原文:WPF 触摸到事件 本文从代码底层告诉大家,在触摸屏幕之后是如何拿到触摸点并且转换为事件 在 WPF 界面框架核心就是交互和渲染,触摸是交互的一部分.在 WPF 是需要使用多个线程来做触摸和渲染 ...

  4. 2019-11-29-WPF-非客户区的触摸和鼠标点击响应

    原文:2019-11-29-WPF-非客户区的触摸和鼠标点击响应 title author date CreateTime categories WPF 非客户区的触摸和鼠标点击响应 lindexi ...

  5. 2019-8-8-WPF-非客户区的触摸和鼠标点击响应

    title author date CreateTime categories WPF 非客户区的触摸和鼠标点击响应 lindexi 2019-08-08 16:48:31 +0800 2019-07 ...

  6. jquery 与javascript关系 ①取元素 ②操作内容 ③操作属性 ④操作 样式 ⑤ 事件 点击变色

    jQuery的min版本和原版功能是一样的,min版主要应用于已经开发成的网页中,而非min版 的文件比较大,里面有整洁的代码书写规范和注释,主要应用于脚本开发过程当中. JQuery是继protot ...

  7. 2016/4/1 jquery 与javascript关系 ①取元素 ②操作内容 ③操作属性 ④操作 样式 ⑤ 事件 点击变色

    jQuery的min版本和原版功能是一样的,min版主要应用于已经开发成的网页中,而非min版 的文件比较大,里面有整洁的代码书写规范和注释,主要应用于脚本开发过程当中. JQuery是继protot ...

  8. Swift - 触摸事件(点击,移动,抬起等)说明及用例

    在iOS开发中,UIGestureRecognizer可以方便的响应处理手势事件. 而如果要想更精细的处理,我们还需要借助touchesBegan,touchesMoved,touchesEnded等 ...

  9. 《FLASH CC 2015 CANVAS 中文教程》——2、基本的交互(点击、触摸)事件

    注::如果你对 FLASH 这个软件操作不够熟悉,建议你可以先看看FLASH动画之类的书. :FLASH CC 在文中直接简称为CC. :以下所以文章中所说的快捷键 如果你按了不起作用,请检查是否有其 ...

  10. 在UITouch事件中画圆圈-iOS8 Swift基础教程

    这篇教程主要内容展示如何利用Core Graphics Framework画圆圈,当用户点击屏幕时随机生成不同大小的圆,这篇教程在Xcode6和iOS8下编译通过. 打开Xcode,新建项目选择Sin ...

随机推荐

  1. PairRDD中算子combineByKey图解

    1.combineByKey combine 为结合意思.    作用: 将RDD[(K,V)] => RDD[(K,C)] 表示V的类型可以转成C两者可以不同类型. def combineBy ...

  2. [转]解决 Eclipse项目红感叹号

    原文地址:http://www.cnblogs.com/hakuci/archive/2012/01/06/2314143.html 原因:显示红色感叹号是因为jar包的路径不对 解决:在项目上右击B ...

  3. C语言 · 整除问题

    算法训练 整除问题   时间限制:1.0s   内存限制:512.0MB      问题描述 编写一个程序,输入三个正整数min.max和factor,然后对于min到max之间的每一个整数(包括mi ...

  4. mysql 分库分表(水平切割和垂直切割)

    分表是分散数据库压力的好方法. 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库. 当然,首先要知道什么情况下,才需要分表.个人觉得单表记录条数达到百万到千万 ...

  5. C++ c++与C语言的区别(struct类型的加强,函数-变量类型加强,bool类型)

    //区别④:struct类型的加强(C++版本) #include<iostream> using namespace std; //C++中的struct是一个新类型的定义声明 //c+ ...

  6. implicit declaration of function 'copy_from_user'

    内核中使用copy_from_user()和copy_to_user()函数,编译出现错误: implicit declaration of function 'copy_from_user' 需要添 ...

  7. Spring 4 官方文档学习(十)数据访问之ORM

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/orm.html 占位用,暂略.

  8. windows 解压缩命令

    首先安装winrar 压缩: 命令:start winrar a test test.py 解压: 命令:start winrar x -y test.rar F:\batShell\test\tes ...

  9. 修改MySQL的默认密码的四种小方法

    投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-09-05我要评论 对于windows平台来说安装完MySQL后,系统就已经默认生成了许可表和账户,下文中就教给大家如何修改MyS ...

  10. 网络协议之socks---子网和公网的穿透

    http://www.cnblogs.com/imyijie/p/4595889.html