博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于手势处理
阅读量:6090 次
发布时间:2019-06-20

本文共 1093 字,大约阅读时间需要 3 分钟。

项目要求:通过手势滑动方向和距离操作无人机

起初

用UISwipeGestureRecognizer初始化,指定四个方向direction,再添加到views 上,啪啪啪,三两下搞好了,发现swipe是在UIGestureRecognizerStateEnded状态下才触发的,而不能获得 UIGestureRecognizerStateBegan

而要求是要在滑动过程中,持续将发出数据,

现在

不使用系统手势,直接获取view的点击事件

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event;

- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event;

- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event;

在方法中有做判断

if([touches count] != 1)

return ;

UITouch *touch = [touches anyObject];

UIView *view = [touch view];

if(view != self)

return ;

Point = [touch locationInView:view];

然后在Began时获得起始点 startPoint,并开启定时器 [self startUpdateTimer],在Moved时获得结束点 endPoint,在Ended中关闭定时器 [self stopUpdateTimer];将两者的距离和方向计算出来

- (void)distanceOfPoint:(CGPoint)point1 withPoint:(CGPoint)point2

内部计算较为简单,然后将滑动方向和距离 结果传出,这里用了刚学到的新技能,将信号压缩传出

[[RACSignal zip:@[self.directionSignal, self.distanceandSignal, self.viewTargetSignal]]subscribeNext:^(id x) {

NSDictionary *flyOrderInfo = [NSDictionary dictionaryWithObjectsAndKeys:

x, @"flyOrderInfo", nil];

postNotification(SENDFLYORDER,self, flyOrderInfo);

}];

转载地址:http://hvvwa.baihongyu.com/

你可能感兴趣的文章
针对Android的Pegasus恶意软件版本和针对iOS的有什么不同?
查看>>
全局探色器
查看>>
Hive Export和Import介绍及操作示例
查看>>
http://mongoexplorer.com/ 一个不错的 mongodb 客户端工具。。。
查看>>
上传jar包到nexus私服
查看>>
Why Namespace? - 每天5分钟玩转 OpenStack(102)
查看>>
Project:如何分析项目中的资源分配情况
查看>>
HDU 4803 Poor Warehouse Keeper (贪心+避开精度)
查看>>
小错误汇总
查看>>
Spring源码系列 — Envoriment组件
查看>>
java正则表达式去除html标签,Java中正则表达式去除html标签
查看>>
使用Cobbler批量部署Linux操作系统
查看>>
zabbix企业应用之服务端与客户端的安装
查看>>
实例讲解遗传算法——基于遗传算法的自动组卷系统【理论篇】
查看>>
无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份验证
查看>>
Bat相关的项目应用
查看>>
Django为数据库的ORM写测试例(TestCase)
查看>>
web.xml中的contextConfigLocation在spring中的作用
查看>>
NYOJ-107 A Famous ICPC Team
查看>>
与众不同 windows phone (44) - 8.0 位置和地图
查看>>