如何用UIGestureRecognizer去偵測使用者輸入

组态王|以一定的时间间隔查询某个时间段内的历史数据 使用该函数其他都可以满足,唯一问题是变量的选择,当切换站点后查询历史数据时,所选的变量依然是上次站点查询时所选择的变量,每当更换站点查询时都需要重新选择变量,这一点太繁琐,是用户和操作者无法忍受的。但是由于现场可能数据变化并非太过频繁,想要实现记录频率不变,还是以1分钟一次的频率进行存储,但是报表查询的时候想要只显示整点的数据。其中日历控件的设置与之前的历史数据查询是一样的,报表的抬头设置都是不用变的,此处不再赘述,有兴趣的可以。以上为组态王中以一定的时间间隔查询某个时间段内的历史数据的实现过程。 阅读详情

這兩天在寫iPad的東西,剛好看到這個好用的新Class,iPhone OS3.2以後大概都會有,
官方範例只有兩種,在這裡幫大家簡單整理一下用法

在3.2以前,我們要拿到UITouch跟使用者互動,大部分都是透過UIResponder的四種methods

  1. - (void)touch esBegan:(NSSet *)touches withEvent:(UIEvent *)event
  2. - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
  3. - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
  4. - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
複製代碼

有些人會把UITouch重新wrap丟到自己的queue裡面去處理,
不然就是直接在這幾個function裡直接判斷,其實都不會差太多,簡單的說...就是麻煩 @@

3.2以後,透過UIGestureRecognizer及其他繼承它的UIxxxGestureRecognizer,
偵測使用者輸入就變的簡單許多
廢話說得差不多了....正文開始 ^^

UIxxxGestureRecognizer目前有6種之多(以前自己寫有多可憐

)

  1. UILongPressGestureRecognizer
  2. UIPanGestureRecognizer
  3. UIPinchGestureRecognizer
  4. UIRotationGestureRecognizer
  5. UISwipeGestureRecognizer
  6. UITapGestureRecognizer
複製代碼

照名字看大概就知道這是做什麼用的,所以我就不解釋啦,直接看用法.....

以UIPanGestureRecognizer為例,這是處理使用者用一隻手指(或多隻)在螢幕上滑來滑去的動作,
要偵測這個動作,只要加下面這段code進view DidLoad或任何你需要的地方...

  1. UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)];
  2. [self.view addGestureRecognizer:panRecognizer];
  3. panRecognizer.maximumNumberOfTouches = 1;
  4. panRecognizer.delegate = self;
  5. [panRecognizer release];
複製代碼

第一個很簡單,就是確定要給這個recognizer handle的event,就會去call這個class底下的handlePanFrom:
然後把recognizer加進UIView裡(addGestureRecognizer),
因為同時間我只想知道一隻手指的動作,所以我用maximumNumberOfTouches=1來限制,
當然,你可以改變maximumNumberOfTouches跟minimumNumberOfTouches的值來當成filter,接著把 delegate設定成自己(記得header要加上UIGestureRecognizerDelegate),不過這樣還沒有結束...

我們要補上這個delegate method

  1. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
複製代碼

裡面可以先filter event,決定要不要丟給一開始assign給panRecognizer的selector function
譬如我只想要看某個subview的事件

  1. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
  2.    UIView *aview = [self.view viewWithTag:1000];
  3.    if (touch.view != aview) {
  4.      return NO; // 不理這個event
  5.    }
  6.    return YES;
  7. }
複製代碼

接下來就是

  1. - (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {       
  2.         //拿到手指目前的位置
  3.         CGPoint location = [recognizer locationInView:self.view];
  4.         UIView *aview = [self.view viewWithTag:1000];

  5.         // 如果UIGestureRecognizerStateEnded的話...你是拿不到location的
  6.         // 不判斷的話,底下改frame會讓這個subview消失,因為origin的x和y就不見了!!!
  7.         if(recognizer.state != UIGestureRecognizerStateEnded)
  8.         {
  9.                 aview.frame = CGRectMake(location.x, location.y, aview.frame.size.width, aview.frame.size.height);
  10.         }
  11. }
複製代碼

不同的UIGestureRecognizer subclass都會有不同特點,譬如說Pinch的scale,velocity和Swipe的direction,
直接簡化了處理UITouch的步驟,大家只要知道這些特點,處理使用者輸入就會得心應手啦~
遇到靈異事件...記得先看看有沒有判斷UIGestureRecognizer的state喔


from: http://dev.iphonetw.net/redirect.php?tid=1938&goto=lastpost

无源定位入门(二):FDOA(2)信号模型和原理 信号模型 假设地面固定目标信号源位置为 ,有M架飞机随机分布在空中,并作匀速直线运动。时刻t的时候第i架飞机的位置为,飞行速率为 , 假设目标的信号中心频率为 ,电磁波的传播速度为 ,则此时每个飞机接收目标信号的频率为 以第1架飞机为参考基站,目标信号到达第n架飞机和参考基站之间的FDOA 测量值可表示为 ... 阅读详情

相关推荐

1、掌握 Microsoft Dynamics 365 Business Central 开发全解析

本文全面解析了Microsoft Dynamics 365 Business Central的开发全流程,涵盖开发环境搭建、AL语言扩展开发、定制解决方案实现、高级开发技术、文件与报表处理、打印功能、调试与性能优化、API使用、Azure和Power Platform集成、DevOps实践以及生成式AI应用。同时探讨了开发工具技巧、常见问题解决、开发流程优化、团队协作要点及未来技术趋势,帮助开发者系统掌握Business Central开发核心技能,提升企业级应用开发效率与质量。

food6的博客 92

如何用UIGestureRecognizer侦测使用者输入

在3.2以前我们要用到UITouch跟用户互动,大部分都是通过UIResponser四种methods view plain - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event   - (void)touchesCancelled:(NSSet *)touches withEve

ch_soft的专栏 1042

3D 结构光相机工作原理全解 | 从编码投射到三维重建,原理 + 代码 + 工业实战一站式掌握

本文从3D结构光相机的整体架构出发,层层拆解了编码投射、相位计算、相位解包裹、三维重建的核心原理,补充了工业实战所需的公式推导、代码实现、参数调优、设备选型和案例落地,核心总结如下:相位是3D结构光成像的“灵魂”,其精度、稳定性直接决定3D重建的效果,包裹相位与绝对相位的区分的是工业实战的基础;编码投射的核心是“正弦条纹+格雷码条纹”组合,正弦条纹负责高精度相位提取,格雷码条纹辅助解包裹,适配工业场景的精度与稳定性需求;

getusushu的博客 336

UIGestureRecognizer侦测使用者输入操作

From:http://www.cocoachina.com/iphonedev/sdk/2010/1214/2471.html 时间: 2010-12-14 13:44在3.2以前,我们要拿到UITouch跟使用者互动,大部分都是透过UIResponder的四种methods - (void)touchesBegan:(NSSet *)touches withEvent:(UIE

xia07的专栏 639

UIGestureRecognizer侦测使用者输入操作

在3.2以前,我们要拿到UITouch跟使用者互动,大部分都是透过UIResponder的四种methods  - (void)touchesBegan:(NSSet *)toucheswithEvent:(UIEvent *)event  - (void)touchesCancelled:(NSSet *)toucheswithEvent:(UIEvent *)event  - (

大萝卜 381

[转]iPhone 用UIGestureRecognizer侦测使用者输入操作

在3.2以前,我们要拿到UITouch跟使用者互动,大部分都是透过UIResponder的四种methods - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event - (void)t...

weixin_30919235的博客 113

UIGestureRecognizer侦测使用者输入

源自:http://www.cocoachina.com/iphonedev/sdk/2010/1214/2471.html 用UIGestureRecognizer侦测使用者输入操作 在3.2以前,我们要拿到UITouch跟使用者互动,大部分都是透过UIResponder的四种methods - (void)touchesBegan:(NSSet *)touches with

SlimApp 1109

iPhone 用UIGestureRecognizer侦测使用者输入操作

<br />http://fei263.blog.163.com/blog/static/92793724201011153431612/<br /> <br />在3.2以前,我们要拿到UITouch跟使用者互动,大部分都是透过UIResponder的四种methods <br /> - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event<br /> - (void)touchesCancelled:(NSSet *)touche

NULLCN的专栏 980

iPhone开发之用UIGestureRecognizer侦测使用者输入操作

在3.2以前,我们要拿到UITouch跟使用者互动,大部分都是透过UIResponder的四种methods   - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event   - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event   - ...

weixin_34281537的博客 86

UIGestureRecognizer的使用

UIGestureRecognizer侦测使用者输入操作     在3.2以前,我们要拿到UITouch跟使用者互动,大部分都是透过UIResponder的四种methods  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesCancelled:(NSSet *)touches...

wsq198760的专栏 239

IOS开发之手势——UIGestureRecognizer 共存

在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外,也可以用 UIGestureRecognizer 的衍生类別来进行判断。用 UIGestureRecogn

pjk1129专栏 3万+

IOS开发之手势——UIGestureRecognizer

在 iPhone 或 iPad 的开发中,除了用touchesBegan / touchesMoved / touchesEnded这组方法来控制使用者的手指触控外,也可以用UIGestureRecognizer的衍生类別来进行判断。用UIGestureRecognizer的好处在于有现成的手势,开发者不用自己计算手指移动轨迹。UIGestureRecognizer的衍生类別...

dasdag32432423的博客 161

UIGestureRecognizer 的共存

在 iPhone 或 iPad 的開發中,除了用 touchesBegan / touchesMoved / touchesEnded 這組方法來控制使用者的手指觸控外,也可以用 UIGestureRecognizer 的衍生類別來進行判斷。用 UIGestureRecogn

ThomasQiuJS的专栏 1155

Python智慧教室人脸考勤系统源码,基于嵌入式AI的人脸识别课堂签到系统.zip

Python智慧教室人脸考勤系统源码,基于嵌入式AI的人脸识别课堂签到系统,该系统主要用于基于人脸识别的课堂考勤场景,技术实现如下:①客户端②服务器该系统巧妙地将网络通信、嵌入式边缘AI、人脸识别技术运用于课堂考勤场景下,无需借助钉钉、学习通等第三方应用程序,只需进入教室前进行人脸识别,系统即可进行学生身份验证并自动汇总课堂签到结果,实现智能化课堂考勤功能。该系统成本低廉,复用性强,对未来高校智慧教室的实现与推广具有巨该系统巧妙地将网络通信、嵌入式边缘AI、人脸识别技术运用于课堂考勤场景下,无需借助钉钉、学习通等第三方应用程序,只需进入教室前进行人脸识别,系统即可进行学生身份验证并自动汇总课堂签到结果,实现智能化课堂考勤功能。该系统成本低廉,复用性强,对未来高校智慧教室的实现与推广具有巨大积极作用。该系统巧妙地将网络通信、嵌入式边缘AI、人脸识别技术运用于课堂考勤场景下,无需借助钉钉、学习通等第三方应用程序,只需进入教室前进行人脸识别,系统即可进行学生身份验证并自动汇总课堂签到结果,实现智能化课堂考勤功能。该系统成本低廉,复用性强,对未来高校智慧教室的实现与推广具有巨大积极作用。

UL 2251-2022中文翻译+英文原版.zip

UL 2251-2022标准翻译与英文原版

上一篇: iphone app中读取本地txt,csv文件
下一篇: iphone开发相关的网站
ToddFox
博客等级 码龄17年 58粉丝 18原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值