iOS学习—iOS长按手势事件
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长按手势事件相关推荐
- IOS 定义手势监听器详解,利用 UIGestureRecognizer 进行捏合、旋转、平移、点击、长按手势事件响应
IOS中我们可以通过UITouch进行触摸事件监听,但是UITouch实现捏合.旋转.长按等手势事件监听非常麻烦.IOS中提供 UIGestureRecognizer 的子类帮我们简洁等实现捏合.旋转 ...
- IOS 学习---触摸事件与手势
2019独角兽企业重金招聘Python工程师标准>>> 单击手势与双击手势 //单击手势UITapGestureRecognizer *tap1 = [[UITapGestureRe ...
- iOS学习9_事件分发amp;响应链
iOS的三种事件:触摸事件/运动事件/远程控制事件 typedef enum { UIEventTypeTouches, UIEventTypeMotion, UIEventTypeRemoteCon ...
- IOS开发教程第一季之02UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例
1.创建并实现手势的基本步骤 点击手势 #import "ViewController.h"@interface ViewController () @property (weak ...
- iOS手势全埋点:轻拍手势、长按手势、捏合手势、旋转手势、轻扫手势、平移手势、屏幕边缘平移手势
文章目录 前言 I.手势全埋点方案 1.1 轻拍手势全埋点 1.2 长按手势全埋点 II .右划返回的事件与scrollView滚动事件冲突的解决方案 see also 前言 由于UIGestureR ...
- [IOS]自定义长触屏事件
写一个Demo来自定义一个长触屏事件,自定义长按手势. 实现步骤: 1.创建一个自定义手势类,命名为LongPressGestureRecognizer,在创建的时候继承UIGestureRecogn ...
- iOS 利用长按手势移动 Table View Cells
本文译自:Cookbook: Moving Table View Cells with a Long Press Gesture 目录: 你需要什么? 如何做? 如何将其利用至UICollection ...
- iOS自定义长按手势,随意拖动Cell
起因 最近在做一个项目,要对UITableViewCell进行拖动蹂躏,具体效果如下: 本来打算用UIRespon这几个方法来做,最后发现在UITableViewController中这几个方法不会被 ...
- iOS学习笔记-自己动手写RESideMenu
代码地址如下: http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars ...
最新文章
- Robotium todolist.test.elements
- entity framework 6 我写了一个公用数据类
- word2vec原理(五):skip-gram和CBOW模型代码实现
- 关联数组不能转化为JSON字符串
- LINQ 的查询执行何时是延迟执行,何时是立即执行,以及查询的复用
- IT English Collection(9) of Objective-C
- java java编码_Java编码约定被认为是有害的
- dropdownlist可以多选。类似的例子。。。
- 开发者调试工具Chrome Workspace
- 浅谈Flutter UI布局
- JS JQ 页面加载顺序方法的区别
- QTP11 5发布,改名UFT
- 打印九九乘法表算法-java
- PHP+mysql共享自行车租赁管理系统
- JAVA---数组从小到大排序方法
- 用js改变网页的背景颜色
- SQL考点之存储过程、存储函数、游标
- eclipse快捷键总结
- 安卓系统7.1搭建Xposed环境
- ISCC 2018 PWN WriteUp
热门文章
- 程序员加油站——完美主义也是一种错
- 完整!贪吃蛇游戏c语言代码分享(包括界面,计数,提示)
- 上传文件 力软_力软敏捷开发框架权限系统,MVC,CRM,OA,APP工作流源码 说明文档齐全【更新至6.1.6.2】...
- PC1 ping PC2 步骤
- js php计算器编程,js 计算器实现
- PanDownload又复活了!抓紧保存...
- Linux 终端命令使用讲解
- js运行后自动刷新页面的问题
- LVS三种工作模式(NAT、DR、TUN)原理及配置
- linux字符设备和块设备的区别 以及网络设备