Swift - 各种手势检测大全(UIGestureRecognizer及其子类)
UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
class ViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() var swipe = UISwipeGestureRecognizer (target: self , action: Selector ( "swipe:" )) swipe.direction = UISwipeGestureRecognizerDirection . Up self .view.addGestureRecognizer(swipe) } func swipe(recognizer: UISwipeGestureRecognizer ){ println ( "swipe ok" ) var point=recognizer.locationInView( self .view) //这个点是滑动的起点 println (point.x) println (point.y) } } |
1
2
|
//表示监听滑动的方向为向上 swipe.direction = UISwipeGestureRecognizerDirection . Up |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
class ViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() var swipeUp = UISwipeGestureRecognizer (target: self , action: Selector ( "swipe:" )) swipeUp.direction = UISwipeGestureRecognizerDirection . Up self .view.addGestureRecognizer(swipeUp) var swipeDown = UISwipeGestureRecognizer (target: self , action: Selector ( "swipe:" )) swipeDown.direction = UISwipeGestureRecognizerDirection . Down self .view.addGestureRecognizer(swipeDown) } func swipe(recognizer: UISwipeGestureRecognizer ){ if recognizer.direction == UISwipeGestureRecognizerDirection . Up { println ( "向上滑动" ) } else if recognizer.direction == UISwipeGestureRecognizerDirection . Down { println ( "向下滑动" ) } var point=recognizer.locationInView( self .view) //这个点是滑动的起点 println (point.x) println (point.y) } } |
2,UITapGestureRecognizer:轻点手势(点击)
(1)可以通过numberOfTouchesRequired属性设置触摸点数,比如设置2表示必须两个手指触摸时才会触发
(2)通过numberOfTapsRequired属性设置点击次数,单击设置为1,双击设置为2
(3)如果一个控件既监听了单击事件也监听了双击事件,默认当双击事件触发的时候也同时会触发单击事件。如果想双击时不触发单击,需要通过requireGestureRecognizerToFail进行设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
class ViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() //单击监听 var tapSingle= UITapGestureRecognizer (target: self ,action: "tapSingleDid" ) tapSingle.numberOfTapsRequired=1 tapSingle.numberOfTouchesRequired=1 //双击监听 var tapDouble= UITapGestureRecognizer (target: self ,action: "tapDoubleDid:" ) tapDouble.numberOfTapsRequired=2 tapDouble.numberOfTouchesRequired=1 //声明点击事件需要双击事件检测失败后才会执行 tapSingle.requireGestureRecognizerToFail(tapDouble); self .view.addGestureRecognizer(tapSingle) self .view.addGestureRecognizer(tapDouble) } func tapSingleDid(){ println ( "单击了" ) } func tapDoubleDid(sender: UITapGestureRecognizer ){ if sender.view == self .view{ println ( "双击了" ) } } } |
3,UIPinchGestureRecognizer:捏合手势(两个手指进行放大缩小)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class ViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() //设置监听方法为pinchDid方法 var pinch= UIPinchGestureRecognizer (target: self ,action: "pinchDid:" ) self .view.addGestureRecognizer(pinch) } func pinchDid(recognizer: UIPinchGestureRecognizer ) { //在监听方法中可以实时获得捏合的比例 println (recognizer.scale); } } |
4,UIRotationGestureRecognizer:旋转手势(两个手指进行旋转)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class ViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() var rotation= UIRotationGestureRecognizer (target: self ,action: "rotationDid:" ) self .view.addGestureRecognizer(rotation) } func rotationDid(recognizer: UIRotationGestureRecognizer ){ //旋转的弧度转换为角度 println (recognizer.rotation*(180/ CGFloat ( M_PI ))) } } |
5,UIPanGestureRecognizer:拖动手势
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class ViewController : UIViewController { var rect: UIView ! override func viewDidLoad() { super .viewDidLoad() rect= UIView (frame: CGRectMake (0, 0, 100, 100)) rect.center= self .view.center rect.backgroundColor= UIColor .redColor() self .view.addSubview(rect) var pan = UIPanGestureRecognizer (target: self ,action: "panDid:" ) pan.maximumNumberOfTouches=1 rect.addGestureRecognizer(pan) } func panDid(recognizer: UISwipeGestureRecognizer ){ var point=recognizer.locationInView( self .view) //设置矩形的位置 rect.center=point } } |
6,UILongPressGestureRecognizer:长按
Swift - 各种手势检测大全(UIGestureRecognizer及其子类)的更多相关文章
- swift - 各种手势用法大全
UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有: 1.首先创建几个view,来用于手势的检测 let view1 = UIView() let view2 ...
- iOS 手势识别器(UIGestureRecognizer)
UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势. UIGestureRecognizer的子类有: UITapGestureRecogni ...
- swift 中手势的使用
swift 中手势的使用 /**点击手势*/ func tapGestureDemo() { //建立手势识别器 let gesture = UITapGestureRecognizer(target ...
- iOS8 Core Image In Swift:人脸检测以及马赛克
iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸 ...
- 9.3、Libgdx手势检测
(官网:www.libgdx.cn) 触摸屏在输入的基础上增加了手势检测,比如两个手指实现缩放,单击或双击屏幕,长按屏幕等. Libgdx提供了GestureDetector来帮助你检测以下手势: t ...
- Android 手势检测实战 打造支持缩放平移的图片预览效果(下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39480503,本文出自:[张鸿洋的博客] 上一篇已经带大家实现了自由的放大缩小图 ...
- 看完这篇还不会 GestureDetector 手势检测,我跪搓衣板!
引言 在 android 开发过程中,我们经常需要对一些手势,如:单击.双击.长按.滑动.缩放等,进行监测.这时也就引出了手势监测的概念,所谓的手势监测,说白了就是对于 GestureDetector ...
- UIGestureRecongnizer 手势检测 swift
// // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...
- ios的手势操作之UIGestureRecognizer浅析
转载地址:http://blog.csdn.net/likendsl/article/details/7554150 每一个手势的实现例子,可参考下面网址:http://www.cnblogs.com ...
随机推荐
- Android --Vibrator--震动服务
1.取得震动服务的句柄 vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);或者vibrator = (Vibrator)getAppli ...
- BZOJ 1110: [POI2007]砝码Odw( 贪心 )
ORZjcvb... #include<bits/stdc++.h> using namespace std; ; int N, M, item[maxn], V[maxn]; vecto ...
- C中的链接属性及作用域
如果相同的标识符出现在几个不同的源文件中时,它们是表示相同的实体,还是不同的实体.标识符的链接属性决定如何处理在不同文件中出现的标识符.标识符的作用域与它的链接属性有关. 链接属性一般有三种:exte ...
- 使用ant的war任务打包j2ee web项目
<?xml version="1.0" encoding="UTF-8"?> <project name="antwebprojec ...
- 我的Python成长之路---第一天---Python基础(作业1:登录验证)---2015年12月26日(雾霾)
作业一:编写登录接口 输入用户名密码 认证成功系那是欢迎信息 输错三次后锁定 思路: 1.参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则 1)认证流程参考的是Lin ...
- c语言实现atoi和itoa函数。
首先看atoi函数: C语言库函数名: atoi 功 能: 把字符串转换成整型数. 名字来源:ASCII to integer 的缩写. 原型: int atoi(const char *nptr); ...
- ios9怎么设置6位密码 ios9设置6位密码图文教程
在原来的 iOS 系统中,只有四位数字密码与复杂密码之分,而在 iOS9 系统中却多出了一个六位数字密码,那ios9怎么设置6位密码,今天小编就为大家带来ios9设置6位密码图文教程 在原来的 i ...
- Ormlite自定义db的位置和自动更新问题
先说说以下为测试代码,有点乱,大家讲究着看.以下例子都是采用的ormlite的框架. 第一步,自定义数据库的位置: 建议一个类DatabaseHelper 继承 OrmLiteSqliteOpenHe ...
- backbone入门小例子
最近听了个backbone的分享,为了避免听不懂,就先做了个小例子 例子很简单,效果如下 基本视图模板: <script type="tex/template" id=&qu ...
- 写程序取自己进程的AEP
测试程序功能 打印出自己进程的程序入口点地址. 结合OD载入程序,看到的入口点确实是0x004014f0, 说明程序入口点找到了 测试程序 /// @file exam_1_1.c #include ...