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. ...
随机推荐
- java timer timertask mark
其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: 1 2 3 4 5 6 Timer timer = ...
- 【精】C# 中的委托和事件(转)
C# 中的委托和事件 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真 ...
- 一款基于jQuery可放大预览的图片滑块插件
今天给大家分享一款基于jQuery可放大预览的图片滑块插件.这款jQuery焦点图插件的特点是可以横向左右滑动图片,并且点击图片可以进行放大预览,唯一的缺陷是这款焦点图并不能循环切换,如果你有较好的J ...
- 纯css3实现的3D按钮
前面已经为大家介绍了好多纯css3实现的按钮.今天要再给大家带来一款纯css3实现的3D按钮.在实例中给出了五种颜色的3D按钮.效果图如下: 在线预览 源码下载 实现的代码. html代码: &l ...
- get_class_vars
个人理解:感觉就是一个将类里的属性值转换为数组的一个东西. <?php class myclass { var $var1; // 此变量没有默认值…… var $var2 = "xy ...
- GB2312汉字区位码、交换码和机内码转换方法 (ZT)
GB2312汉字区位码.交换码和机内码转换方法 (ZT) 为了适应计算机处理汉字信息的需要,1981年我国颁布了GB2312国家标准.该标准选出6763个常用汉字(其中,一级常用汉字3755个,二级汉 ...
- Android——列表视图 ListView(二)SimpleAdapter
SimpleAdapter:可显示文字加图片 activity_activitysimple.xml <?xml version="1.0" encoding="u ...
- 【json】Jackson的使用
Jackson所有的操作都是通过ObjectMapper对象实例来操作的,可以重用这个对象实例. 首先定义一个实例: ObjectMapper mapper = new ObjectMapper(); ...
- import_tasks: tasks/sometasks.yml
- import_tasks: tasks/sometasks.yml when: "'reticulating splines' in output" unarchive模块用 ...
- shell脚本----for循环
1.方法1 #!/bin/bash for((i=1;i<10;i++)) do echo $i done 保存为for1.sh 直接sh for1.sh 会报错: Syntax error ...