iOS——常用的手势总结

前言

我们在平时玩手机的时候都知道关于手势的重要性,在加入手势的应用时,使我们的App变得更加方便使用,那么具体iOS有几种常用的手势呢?下面我简单的总结一下那些关于iOS最常用的手势。关于手势的应用iOS提供了UIGestureRecognizer类。手势识别UIGestureRecognizer类是个抽象类,下面的子类是具体的手势,开发这可以直接使用这些手势识别:

使用手势的步骤

使用手势很简单,分为两步:

  1. 创建手势实例。当创建手势时,指定一个回调方法,当手势开始,改变、或结束时,回调方法被调用。
  2. 添加到需要识别的View中。每个手势只对应一个View,当屏幕触摸在View的边界内时,如果手势和预定的一样,那就会回调方法。

需要注意的是:一个手势只能对应一个View,但是一个View可以有多个手势。

UIPanGestureRecognizer (拖动手势)

新建一个ImageView,然后添加手势

UIImageView *panImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pan.png"]];
panImageView.frame = CGRectMake(50, 50, 100, 160);
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]  initWithTarget:self  action:@selector(handlePan:)];
[panImageView addGestureRecognizer:panGestureRecognizer];
[self.view setBackgroundColor:[UIColor whiteColor]];
[self.view addSubview:panImageView];  

它 的回调方法:

- (void) handlePan:(UIPanGestureRecognizer*) recognizer
{  CGPoint translation = [recognizer translationInView:self.view];  recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,  recognizer.view.center.y + translation.y);  [recognizer setTranslation:CGPointZero inView:self.view];  }

UIPinchGestureRecognizer(缩放手势)

//创建手势对象
UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pichGestureClick:)];//添加到视图
[imageView addGestureRecognizer:pinch];

关联方法:

- (void)pichClick:(UIPinchGestureRecognizer *)pinch {//缩放的系数NSLog(@"%.2lf", pinch.scale);//固定写法pinch.view.transform = CGAffineTransformScale(pinch.view.transform, pinch.scale, pinch.scale);//重置缩放系数(否则系数会累加)pinch.scale = 1.0;
}

UIRotationGestureRecognizer(旋转手势)

//创建手势对象
UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGestureClick:)];//添加到视图
[imageView addGestureRecognizer:rotation];

关联方法:


- (void)rotationClick:(UIRotationGestureRecognizer *)rotation {//rotation.rotation 手势旋转的角度rotation.view.transform = CGAffineTransformRotate(rotation.view.transform, rotation.rotation);//重置角度rotation.rotation = 0;
}

UITapGestureRecognizer (点按手势)

//创建手势对象
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];//设置相关属性
//点击次数(默认1)
tap.numberOfTapsRequired = 1;
//手指的个数(默认1)
tap.numberOfTouchesRequired = 1;
//添加到视图
[testView addGestureRecognizer:tap];

关联方法:

- (void)tapClick:(UITapGestureRecognizer *)tap{NSLog(@"点按手势响应!");
}

添加两个ImagView并添加手势

前面说过一个手势只能对应一个View,但是一个View可以有多个手势,那么如何将两个View都设定同样的手势呢?

- (void)viewDidLoad
{  [super viewDidLoad];  UIImageView *image1ImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]];  UIImageView *image2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image2.png"]];  snakeImageView.frame = CGRectMake(120, 120, 100, 160);  dragonImageView.frame = CGRectMake(50, 50, 100, 160);  [self.view addSubview:image1ImageView];  [self.view addSubview:image2ImageView];  for (UIView *view in self.view.subviews) {  UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]  initWithTarget:self  action:@selector(handlePan:)];  UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc]  initWithTarget:self  action:@selector(handlePinch:)];  UIRotationGestureRecognizer *rotateRecognizer = [[UIRotationGestureRecognizer alloc]  initWithTarget:self  action:@selector(handleRotate:)];  [view addGestureRecognizer:panGestureRecognizer];  [view addGestureRecognizer:pinchGestureRecognizer];  [view addGestureRecognizer:rotateRecognizer];  [view setUserInteractionEnabled:YES];  }  [self.view setBackgroundColor:[UIColor whiteColor]];
}

iOS——常用的手势总结相关推荐

  1. [iOS]调和 pop 手势导致 AVPlayer 播放卡顿

    作者 NewPan 关注 2017.07.15 14:24* 字数 3110 阅读 749评论 8喜欢 17 声明:我为这个框架写了四篇文章: 第一篇:[iOS]UINavigationControl ...

  2. ios开发学习-手势交互(Gesture)效果源码分享

    qianqianlianmeng ios开发学习-手势交互(Gesture)效果源码分享 All Around Pull View 介绍:实现视图四个方向(上下左右)都能够拖动更新(pull to r ...

  3. IOS常用正则表达式

    IOS常用正则表达式 正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是 ...

  4. ios 轻扫手势_轻扫即可快速删除iOS计算器中的数字

    ios 轻扫手势 iOS' built-in calculator is a basic, simple-to-use calculator that's very handy for doing s ...

  5. IOS开发之手势——UIGestureRecognizer 共存

    IOS开发之手势--UIGestureRecognizer 共存 在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded ...

  6. iOS常用的忽略警告

    在iOS开发过程中,偶尔会碰到一些编译器警告,如果能够确定该警告不会影响到程序的正常运行,则可以手动告诉编译器忽略掉这个警告 iOS常用的忽略警告类型: 1.方法弃用警告 #pragma clang ...

  7. ios 七种手势详解

    //ios 七种手势简单总结 { //创建imageView     UIImage *image = [UIImage imageNamed:@"01.jpeg"];     U ...

  8. 苹果鼠标右键怎么按_Mac触控板常用的手势操作,让你告别Windows鼠标!

    https://www.zhihu.com/video/967471235399155712 在Windows电脑上,鼠标是一个划时代的发明,如果没有它,似乎用电脑进行的大量工作都要停滞.从学习电脑开 ...

  9. iOS常用国外网站清单

    工欲善其事必先利其器,最近发现临时查找一些东西容易浪费时间,花了点时间整理一下常用的网站,方便以后备用. 国内的code4app,ui4app,cocoachina,oschina,csdn就不说了, ...

  10. iOS常用快捷键/终端常用指令

    一 iOS常用快捷键 iOS常用快捷键 新建项目 com + shift +N 新建文件 com + N 偏好设置 通用 com + , 跳到指定行 com + L 当前行加断点 com + \ 向前 ...

最新文章

  1. 布局技巧:使用ViewStub
  2. 记录一下pandas的分组统计功能,agg
  3. 鸟哥的Linux私房菜(基础篇)- 简易且较小安装Red Hat 7.2
  4. python 如何中断程序、停止程序、退出程序?sys.exit()、os._exit()、os.kill()
  5. 直播 | KDD 2021论文解读:基于协同对比学习的自监督异质图神经网络
  6. android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一
  7. transform: translate()
  8. 一文抽丝剥茧带你掌握复杂Gremlin查询的调试方法
  9. [树莓派] : 如何用树莓派利用摄像头进行简单的人脸识别【how to use IR camera +raspberrypi 3b+ in python】
  10. 学号 2016-2017-20155329《Java程序设计》课程总结
  11. python3 写入excel_Python3 读、写Excel文件的操作方法
  12. 计算机操作知识试题及答案真题,计算机操作系统期末考试题及答案
  13. RationalDMIS 2020定制报告(EXCEL)
  14. 会话管理:Cookie和Session
  15. Deep Speech笔记
  16. 【Mac】MAC 终端美化教程(来个全套)
  17. linux基本功系列之uname实战
  18. html页面涂鸦,HTML5 | Canvas画笔小应用(涂鸦板)
  19. Linux环境下Nginx不支持中文文件名解决办法
  20. 计算机 开机硬盘灯一直亮,电脑一开机硬盘灯就一直亮

热门文章

  1. web图书销售管理系统_美萍手机销售WEB版销售管理系统整体解决方案服务商
  2. wap网站制作教程,android面试试题
  3. pycharm项目目录结构_VOCs吸附回收装置和焚烧装置列入新版产业结构调整指导目录鼓励类项目...
  4. 【科研论文】找到中文论文的英文引用格式
  5. RHadoop安装和使用
  6. 华旭 身份证读卡器测试软件_华旭HX-FDX3S读卡器驱动+身份证验证软件
  7. 高二获全奖跳级进哈佛,29岁坐拥数亿身家,这位曾让马云畏惧的“天才神童”现在怎么样了?...
  8. SlickEdit 之缘起
  9. 关于anaconda下载包的位置的问题
  10. Apizza 升级了,更好的 api 接口管理和文档编写,欢迎大家访问吐槽!!