iOS手势状态:

typedef NS_ENUM(NSInteger, UIGestureRecognizerState) {UIGestureRecognizerStatePossible,   // 尚未识别是何种手势操作(但可能已经触发了触摸事件),默认状态UIGestureRecognizerStateBegan,      // 手势已经开始,此时已经被识别,但是这个过程中可能发生变化,手势操作尚未完成UIGestureRecognizerStateChanged,    // 手势状态发生转变UIGestureRecognizerStateEnded,      // 手势识别操作完成(此时已经松开手指)UIGestureRecognizerStateCancelled,  // 手势被取消,恢复到默认状态UIGestureRecognizerStateFailed,     // 手势识别失败,恢复到默认状态UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded // 手势识别完成,同UIGestureRecognizerStateEnded};

示例代码,长按放大,松开缩小,并伴随震动效果。

#import "ViewController.h"
#import <AudioToolbox/AudioToolbox.h>@interface ViewController () {UIButton *btn;
}@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];[self.view addSubview:btn];btn.center = self.view.center;btn.backgroundColor = [UIColor purpleColor];[btn setTitle:@"Button" forState:UIControlStateNormal];btn.layer.masksToBounds = YES;btn.layer.cornerRadius = 10;UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];//设置长按手势,longPressAction为长按后的操作[longPress setMinimumPressDuration:1];//设置按1秒之后触发事件[btn addGestureRecognizer:longPress];//把长按手势添加到按钮
}- (void)longPressAction:(UILongPressGestureRecognizer *)sender {
//    UIGestureRecognizerStatePossible,   // 尚未识别是何种手势操作(但可能已经触发了触摸事件),默认状态
//    UIGestureRecognizerStateBegan,      // 手势已经开始,此时已经被识别,但是这个过程中可能发生变化,手势操作尚未完成
//    UIGestureRecognizerStateChanged,    // 手势状态发生转变
//    UIGestureRecognizerStateEnded,      // 手势识别操作完成(此时已经松开手指)
//    UIGestureRecognizerStateCancelled,  // 手势被取消,恢复到默认状态
//    UIGestureRecognizerStateFailed,     // 手势识别失败,恢复到默认状态
//    UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEndedif (sender.state == UIGestureRecognizerStateBegan) {AudioServicesPlaySystemSound(1520);//添加震动效果[UIView animateWithDuration:0.2 animations:^{CGRect frame = self->btn.frame;frame.size.width = 200;frame.size.height = 100;self->btn.frame = frame;self->btn.center = self.view.center;self->btn.layer.cornerRadius = 20;}];}if (sender.state == UIGestureRecognizerStateEnded) {[UIView animateWithDuration:0.2 animations:^{CGRect frame = self->btn.frame;frame.size.width = 100;frame.size.height = 50;self->btn.frame = frame;self->btn.center = self.view.center;self->btn.layer.cornerRadius = 10;}];}
}

参考链接:iOS——6种系统手势操作_浪极的博客-CSDN博客_ios 长按手势

iOS学习—iOS长按手势事件相关推荐

  1. IOS 定义手势监听器详解,利用 UIGestureRecognizer 进行捏合、旋转、平移、点击、长按手势事件响应

    IOS中我们可以通过UITouch进行触摸事件监听,但是UITouch实现捏合.旋转.长按等手势事件监听非常麻烦.IOS中提供 UIGestureRecognizer 的子类帮我们简洁等实现捏合.旋转 ...

  2. IOS 学习---触摸事件与手势

    2019独角兽企业重金招聘Python工程师标准>>> 单击手势与双击手势 //单击手势UITapGestureRecognizer *tap1 = [[UITapGestureRe ...

  3. iOS学习9_事件分发amp;响应链

    iOS的三种事件:触摸事件/运动事件/远程控制事件 typedef enum { UIEventTypeTouches, UIEventTypeMotion, UIEventTypeRemoteCon ...

  4. IOS开发教程第一季之02UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例

    1.创建并实现手势的基本步骤 点击手势 #import "ViewController.h"@interface ViewController () @property (weak ...

  5. iOS手势全埋点:轻拍手势、长按手势、捏合手势、旋转手势、轻扫手势、平移手势、屏幕边缘平移手势

    文章目录 前言 I.手势全埋点方案 1.1 轻拍手势全埋点 1.2 长按手势全埋点 II .右划返回的事件与scrollView滚动事件冲突的解决方案 see also 前言 由于UIGestureR ...

  6. [IOS]自定义长触屏事件

    写一个Demo来自定义一个长触屏事件,自定义长按手势. 实现步骤: 1.创建一个自定义手势类,命名为LongPressGestureRecognizer,在创建的时候继承UIGestureRecogn ...

  7. iOS 利用长按手势移动 Table View Cells

    本文译自:Cookbook: Moving Table View Cells with a Long Press Gesture 目录: 你需要什么? 如何做? 如何将其利用至UICollection ...

  8. iOS自定义长按手势,随意拖动Cell

    起因 最近在做一个项目,要对UITableViewCell进行拖动蹂躏,具体效果如下: 本来打算用UIRespon这几个方法来做,最后发现在UITableViewController中这几个方法不会被 ...

  9. iOS学习笔记-自己动手写RESideMenu

    代码地址如下: http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars ...

最新文章

  1. Robotium todolist.test.elements
  2. entity framework 6 我写了一个公用数据类
  3. word2vec原理(五):skip-gram和CBOW模型代码实现
  4. 关联数组不能转化为JSON字符串
  5. LINQ 的查询执行何时是延迟执行,何时是立即执行,以及查询的复用
  6. IT English Collection(9) of Objective-C
  7. java java编码_Java编码约定被认为是有害的
  8. dropdownlist可以多选。类似的例子。。。
  9. 开发者调试工具Chrome Workspace
  10. 浅谈Flutter UI布局
  11. JS JQ 页面加载顺序方法的区别
  12. QTP11 5发布,改名UFT
  13. 打印九九乘法表算法-java
  14. PHP+mysql共享自行车租赁管理系统
  15. JAVA---数组从小到大排序方法
  16. 用js改变网页的背景颜色
  17. SQL考点之存储过程、存储函数、游标
  18. eclipse快捷键总结
  19. 安卓系统7.1搭建Xposed环境
  20. ISCC 2018 PWN WriteUp

热门文章

  1. 程序员加油站——完美主义也是一种错
  2. 完整!贪吃蛇游戏c语言代码分享(包括界面,计数,提示)
  3. 上传文件 力软_力软敏捷开发框架权限系统,MVC,CRM,OA,APP工作流源码 说明文档齐全【更新至6.1.6.2】...
  4. PC1 ping PC2 步骤
  5. js php计算器编程,js 计算器实现
  6. PanDownload又复活了!抓紧保存...
  7. Linux 终端命令使用讲解
  8. js运行后自动刷新页面的问题
  9. LVS三种工作模式(NAT、DR、TUN)原理及配置
  10. linux字符设备和块设备的区别 以及网络设备