UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有:
1、首先创建几个view,来用于手势的检测
let view1 = UIView()
let view2 = UIView()
let view3 = UIView()
let view4 = UIView()
let view5 = UIView()
let view6 = UIView()
let view7 = UIView()
let view8 = UIView()
view1.backgroundColor = UIColor.red
view2.backgroundColor = UIColor.yellow
view3.backgroundColor = UIColor.blue
view4.backgroundColor = UIColor.brown
view5.backgroundColor = UIColor.red
view6.backgroundColor = UIColor.yellow
view7.backgroundColor = UIColor.blue
view8.backgroundColor = UIColor.brown view1.frame = CGRect(x:self.view.bounds.width/-,y:,width:,height:)
self.view.addSubview(view1) view2.frame = CGRect(x:self.view.bounds.width/-,y:++,width:,height:)
self.view.addSubview(view2) view3.frame = CGRect(x:self.view.bounds.width/-,y:+*+*,width:,height:)
self.view.addSubview(view3) view4.frame = CGRect(x:self.view.bounds.width/-,y:+*+*,width:,height:)
self.view.addSubview(view4) view5.frame = CGRect(x:self.view.bounds.width/+,y:,width:,height:)
self.view.addSubview(view5) view6.frame = CGRect(x:self.view.bounds.width/+,y:++,width:,height:)
self.view.addSubview(view6) view7.frame = CGRect(x:self.view.bounds.width/+,y:+*+*,width:,height:)
self.view.addSubview(view7) view8.frame = CGRect(x:self.view.bounds.width/+,y:+*+*,width:,height:)
self.view.addSubview(view8)
2、滑动手势(快速滑动),可以添加多个手势绑定同一事件
//滑动手势
let swipeup = UISwipeGestureRecognizer()
swipeup.addTarget(self, action: #selector(hswipe(recognizer:)))
swipeup.direction = .up
view1.addGestureRecognizer(swipeup)
let swipedown = UISwipeGestureRecognizer()
swipedown.addTarget(self, action: #selector(hswipe(recognizer:)))
swipedown.direction = .down
view1.addGestureRecognizer(swipedown)
let swipeleft = UISwipeGestureRecognizer()
swipeleft.addTarget(self, action: #selector(hswipe(recognizer:)))
swipeleft.direction = .left
view1.addGestureRecognizer(swipeleft)
let swiperight = UISwipeGestureRecognizer()
swiperight.addTarget(self, action: #selector(hswipe(recognizer:)))
swiperight.direction = .right
view1.addGestureRecognizer(swiperight)
实现方法:
func hswipe(recognizer:UISwipeGestureRecognizer) {
print("swipe ok")
if recognizer.direction == .up {
print("向上滑动")
}else if recognizer.direction == .down
{
print("向下滑动")
}
let point = recognizer.location(in: view1)
print("\(point.x)--\(point.y)")
self.navigationController?.pushViewController(mySecondViewController(), animated: true)
}
3、轻点手势(点击)
(1)可以通过numberOfTouchesRequired属性设置触摸点数,比如设置2表示必须两个手指触摸时才会触发
(2)通过numberOfTapsRequired属性设置点击次数,单击设置为1,双击设置为2
(3)如果一个控件既监听了单击事件也监听了双击事件,默认当双击事件触发的时候也同时会触发单击事件。
如果想双击时不触发单击,需要通过 requireGestureRecognizerToFail进行设置
//单击监听
let tapsingle = UITapGestureRecognizer()
tapsingle.addTarget(self, action: #selector(hsswipe1))
tapsingle.numberOfTapsRequired = 1
tapsingle.numberOfTouchesRequired = 1
view3.addGestureRecognizer(tapsingle) //双击手势
let tapDouble = UITapGestureRecognizer()
tapDouble.addTarget(self, action: #selector(hswipe2(recon:)))
tapDouble.numberOfTapsRequired = 2
tapDouble.numberOfTouchesRequired = 1
view4.addGestureRecognizer(tapDouble)
实现方法:
func hsswipe1()
{
print("点击")
self.navigationController?.pushViewController(mySecondViewController(), animated: true)
}
func hswipe2(recon:UISwipeGestureRecognizer)
{
print("双击")
}
4、捏合手势
//捏合手势
let pinchTap = UIPinchGestureRecognizer()
pinchTap.addTarget(self, action: #selector(hswipe3(recon:)))
view5.addGestureRecognizer(pinchTap)
实现方法:
func hswipe3(recon:UIPinchGestureRecognizer)
{
print(recon.scale)
}
5、旋转手势
//旋转手势
let rotation = UIRotationGestureRecognizer()
rotation.addTarget(self, action: #selector(hswipe4(recon:)))
view6.addGestureRecognizer(rotation)
实现方法:
func hswipe4(recon:UIRotationGestureRecognizer)
{
print(recon.rotation)
}
6、拖动手势
//拖动手势
let panGap = UIPanGestureRecognizer()
panGap.addTarget(self, action: #selector(hswipe5(recon:)))
panGap.maximumNumberOfTouches =
view7.addGestureRecognizer(panGap)
实现方法:
func hswipe5(recon:UISwipeGestureRecognizer)
{
let point = recon.location(in: view7)
view7.center = point
}
7、长按手势
//长按手势
let longGap = UILongPressGestureRecognizer()
longGap.addTarget(self, action: #selector(hswipe6(recon:)))
view8.addGestureRecognizer(longGap)
实现方法:
func hswipe6(recon:UISwipeGestureRecognizer)
{
if recon.state == .began {
print("长按响应开始")
}else
{
print("长按响应结束")
}
}
8、从左侧滑动
//从左侧边缘划算
let swipe1 = UIScreenEdgePanGestureRecognizer()
swipe1.addTarget(self, action: #selector(haswipe(recon:)))
swipe1.edges = .left
view2.addGestureRecognizer(swipe1)
实现方法:
func haswipe(recon:UISwipeGestureRecognizer)
{
print("从左边边缘开始滑动") let point = recon.location(in: view2) print("\(point.x)--\(point.y)") }
swift - 各种手势用法大全的更多相关文章
-
Swift - 各种手势检测大全(UIGestureRecognizer及其子类)
UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有: 1,UISwipeGestureRecognizer:滑动(快速移动) 1 2 3 4 5 6 7 8 ...
-
转帖: 一份超全超详细的 ADB 用法大全
增加一句 连接 网易mumu模拟器的方法 adb connect 127.0.0.1:7555 一份超全超详细的 ADB 用法大全 2016年08月28日 10:49:41 阅读数:35890 原文 ...
-
swift 中手势的使用
swift 中手势的使用 /**点击手势*/ func tapGestureDemo() { //建立手势识别器 let gesture = UITapGestureRecognizer(target ...
-
MVC5 + EF6 + Bootstrap3 (9) HtmlHelper用法大全(下)
文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-httphelper-part2.html 上一节 ...
-
MVC5 + EF6 + Bootstrap3 (8) HtmlHelper用法大全(上)
文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-httphelper-part1.html 上一节 ...
-
MVC HtmlHelper用法大全
MVC HtmlHelper用法大全HtmlHelper用来在视图中呈现 HTML 控件.以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ·Actio ...
-
C# MessageBox 用法大全(转)
C# MessageBox 用法大全 http://www.cnblogs.com/Tammie/archive/2011/08/05/2128623.html 我们在程序中经常会用到MessageB ...
-
MVC中HtmlHelper用法大全参考
MVC中HtmlHelper用法大全参考 解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web ...
-
pandas用法大全
pandas用法大全 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as pd12 2. ...
随机推荐
-
建站随手记:installation python virtualenv mezzanine -1
aliyun的网络访问有时会有问题,pip有问题的时候使用豆瓣源 pip install $apptoinstall$ -i http://pypi.douban.com/simple ------- ...
-
Linux下如何知道文件被那个进程写
http://blog.yufeng.info/archives/2581#more-2581
-
蓝牙BLE LINK LAYER剖析(一) -- status and channel
一.LINK LAYER STATES 二.PHYSICAL CHANNEL
-
20150911 for循环的用法以及小题目
for: for(初始条件,条件表达式,状态改变) { 循环体 } //100块钱,买2元一只的圆珠笔,3块钱一个的尺子,5元一个的铅笔盒,每样至少一个,正好花光,请问有多少中画法. //一张纸0.0 ...
-
MR-为什么MR类的变量喜欢定义在方法外面?
写了一些MR后发现不管是别人写的还是官方给的,比如map方法,变量都是定义在方法外面. 因为之前都是照猫画虎的写的,所以自己也一直这么写,可是为什么呢? 我试了试定义在方法里面,程序照样跑,试了几个程 ...
-
JS赋值传递的问题
根据值的类型是基本类型值还是复杂类型的值在传递时会有不同. JS函数的参数传递是按值传递,基本类型值传递的是副本,复杂类型值传递的是引用.从而会影响原来的值,不会改变原来的复制前的引用. functi ...
-
抽象类(abstract class)和 接口(interface)
PHP中的 抽象类(abstract class)和 接口(interface) 一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方 ...
-
第14月第30天 svn 撤销ignore revert
1. 直接到被ignore的位置,执行: svn add <你被ignore的文件名> --no-ignore –no-ignore是取消忽略 如果是add目录,你可以: svn add ...
-
[Android]Animation 动画介绍和实现
Animation动画效果来实现菜单的显示和隐藏,本文就来介绍下吧. 1.Animation 动画类型 Android的animation由四种类型组成: XML中 alph 渐变透明度动画效果 sc ...
-
【TP3.2】TP3.2下实现ajax分页(原创+亲测可用)
一,写在最开始:ajax分页的原理,是利用了js的ajax执行请求,获取分页list和分页page [代码块],去替换页面显示数据的[代码块] 技术:js的ajax + TP3.2的fetch(&qu ...