当前位置: 首页 > news >正文

关于手势处理

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

起初

用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

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

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

NSDictionary *flyOrderInfo = [NSDictionary dictionaryWithObjectsAndKeys:

x, @"flyOrderInfo", nil];

postNotification(SENDFLYORDER,self, flyOrderInfo);

}];

转载于:https://juejin.im/post/5a31c85bf265da430c11d298

相关文章:

  • ASP.NET Web API 使用Swagger生成在线帮助测试文档,支持多个GET
  • Centos运行Mysql因为内存不足进程被杀
  • BZOJ3529 [Sdoi2014]数表 【莫比乌斯反演】
  • JS 详解 Cookie、 LocalStorage 与 SessionStorage
  • 进程和线程(5)-分布式进程
  • LeetCode-13-roman-to-integer
  • 荣品i.mx6q飞思卡尔工业级核心板开发板高稳定性
  • SoapUI使用中遇到的问题及解决办法
  • 【软工项目组】第十三次会议(样式设计2.0)
  • QGhappy小组第三次作业第十次会议完成情况
  • corethink功能模块探索开发(二)让这个模块可安装
  • [svc]对称加密/非对称加密细枝末节-如何做到数据传输的authentication/data integrity/confidentiality(私密)...
  • 1的个数
  • 机器学习之线性回归
  • [天下小黑盒]打地鼠小助手
  • ES10 特性的完整指南
  • ES2017异步函数现已正式可用
  • httpie使用详解
  • input的行数自动增减
  • javascript 总结(常用工具类的封装)
  • Java多态
  • log4j2输出到kafka
  • node和express搭建代理服务器(源码)
  • oldjun 检测网站的经验
  • React16时代,该用什么姿势写 React ?
  • session共享问题解决方案
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 动态魔术使用DBMS_SQL
  • 区块链将重新定义世界
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • # 计算机视觉入门
  • #Lua:Lua调用C++生成的DLL库
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $(function(){})与(function($){....})(jQuery)的区别
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (5)STL算法之复制
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十)c52学习之旅-定时器实验
  • (转)为C# Windows服务添加安装程序
  • (转载)Linux网络编程入门
  • *** 2003
  • .aanva
  • .Net Web窗口页属性
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .net和jar包windows服务部署
  • @Conditional注解详解
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [ C++ ] STL---stack与queue