swift - 各种手势用法大全
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. ...
随机推荐
- 工具WinSCP:windows和Linux中进行文件传输
工具WinSCP:windows和Linux中进行文件传输 2016-09-21 [转自]使用WinSCP软件在windows和Linux中进行文件传输 当我们的开发机是Windows,服务器是Lin ...
- Spring Boot干货系列:(二)配置文件解析
Spring Boot干货系列:(二)配置文件解析 2017-02-28 嘟嘟MD 嘟爷java超神学堂 前言 上一篇介绍了Spring Boot的入门,知道了Spring Boot使用“习惯优于 ...
- 在js代码中调用jsp的变量
<% int coblid=Integer.parseInt(request.getParameter("blid")); %> <script> var ...
- iOS 为什么使用xcode8上传app包到appStore无法构建版本
使用xcode8或者application loader上传代码包到AppStore提示上传成功,但是我们在iTunes Connect中的构建版本或者活动中看不到已上传的代码包.这个问题原因是:ap ...
- git工作流教程
简介:在用git进行开发时,需要规范化,这时用git工作流来规范化,软件开发过程 https://github.com/oldratlee/translations/blob/master/git-w ...
- ASPxGridView常用总结
目录:一.客户端常用1.常用API2.聚焦行变更事件3.客户端选择多行4.客户端选择行5. 获取选择的行数目6.单击行时,选中行7.通过checkbox 选择行8.选择所有行9.启动编辑框,Conta ...
- laravel 连接mongodb
In this article we will see how to use MongoDB with Laravel (PHP framework). So first we need to ins ...
- hbase 部署
hbase的部署相对于java来说就比较简单啦,主要过程如下: 1.下载hbase最新的稳定版 2.拷贝到相应的目录 3.修改conf目录下的hbase-env.sh,设置java 和不适用内置的zo ...
- Java中上传文件和表单数据提交如何保持数据的一致性?
学生申请学科竞赛活动,表单中有学科竞赛的申报信息和部分附件,需要做到将上传文件和表单数据提交保持一致性. 将上传文件和插入表单数据放到事务汇总去处理,由于表单的数据我们可以控制,但是上传的文档不好控制 ...
- 字符串移位:如“abcdefghi”右移2位后变成“cdefghiab”
函数头: //pStr 是指向以'\0'结尾的字符串指针 //steps 是要求移动的步数 void LoopMove(char *pStr, int steps) { //...... } 使用库函 ...