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 - 各种手势用法大全的更多相关文章

  1. Swift - 各种手势检测大全(UIGestureRecognizer及其子类)

    UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有: 1,UISwipeGestureRecognizer:滑动(快速移动) 1 2 3 4 5 6 7 8 ...

  2. 转帖: 一份超全超详细的 ADB 用法大全

    增加一句 连接 网易mumu模拟器的方法 adb  connect 127.0.0.1:7555 一份超全超详细的 ADB 用法大全 2016年08月28日 10:49:41 阅读数:35890 原文 ...

  3. swift 中手势的使用

    swift 中手势的使用 /**点击手势*/ func tapGestureDemo() { //建立手势识别器 let gesture = UITapGestureRecognizer(target ...

  4. MVC5 + EF6 + Bootstrap3 (9) HtmlHelper用法大全(下)

    文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-httphelper-part2.html 上一节 ...

  5. MVC5 + EF6 + Bootstrap3 (8) HtmlHelper用法大全(上)

    文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-httphelper-part1.html 上一节 ...

  6. MVC HtmlHelper用法大全

    MVC HtmlHelper用法大全HtmlHelper用来在视图中呈现 HTML 控件.以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ·Actio ...

  7. C# MessageBox 用法大全(转)

    C# MessageBox 用法大全 http://www.cnblogs.com/Tammie/archive/2011/08/05/2128623.html 我们在程序中经常会用到MessageB ...

  8. MVC中HtmlHelper用法大全参考

    MVC中HtmlHelper用法大全参考 解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web ...

  9. pandas用法大全

    pandas用法大全 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as pd12 2. ...

随机推荐

  1. 工具WinSCP:windows和Linux中进行文件传输

    工具WinSCP:windows和Linux中进行文件传输 2016-09-21 [转自]使用WinSCP软件在windows和Linux中进行文件传输 当我们的开发机是Windows,服务器是Lin ...

  2. Spring Boot干货系列:(二)配置文件解析

    Spring Boot干货系列:(二)配置文件解析 2017-02-28 嘟嘟MD 嘟爷java超神学堂   前言 上一篇介绍了Spring Boot的入门,知道了Spring Boot使用“习惯优于 ...

  3. 在js代码中调用jsp的变量

    <% int coblid=Integer.parseInt(request.getParameter("blid")); %> <script> var ...

  4. iOS 为什么使用xcode8上传app包到appStore无法构建版本

    使用xcode8或者application loader上传代码包到AppStore提示上传成功,但是我们在iTunes Connect中的构建版本或者活动中看不到已上传的代码包.这个问题原因是:ap ...

  5. git工作流教程

    简介:在用git进行开发时,需要规范化,这时用git工作流来规范化,软件开发过程 https://github.com/oldratlee/translations/blob/master/git-w ...

  6. ASPxGridView常用总结

    目录:一.客户端常用1.常用API2.聚焦行变更事件3.客户端选择多行4.客户端选择行5. 获取选择的行数目6.单击行时,选中行7.通过checkbox 选择行8.选择所有行9.启动编辑框,Conta ...

  7. laravel 连接mongodb

    In this article we will see how to use MongoDB with Laravel (PHP framework). So first we need to ins ...

  8. hbase 部署

    hbase的部署相对于java来说就比较简单啦,主要过程如下: 1.下载hbase最新的稳定版 2.拷贝到相应的目录 3.修改conf目录下的hbase-env.sh,设置java 和不适用内置的zo ...

  9. Java中上传文件和表单数据提交如何保持数据的一致性?

    学生申请学科竞赛活动,表单中有学科竞赛的申报信息和部分附件,需要做到将上传文件和表单数据提交保持一致性. 将上传文件和插入表单数据放到事务汇总去处理,由于表单的数据我们可以控制,但是上传的文档不好控制 ...

  10. 字符串移位:如“abcdefghi”右移2位后变成“cdefghiab”

    函数头: //pStr 是指向以'\0'结尾的字符串指针 //steps 是要求移动的步数 void LoopMove(char *pStr, int steps) { //...... } 使用库函 ...