经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
UITapGestureRecognizer 的用法(轻触手势识别器)
来源:cnblogs  作者:久依  时间:2019/2/11 9:25:13  对本文有异议

最近在项目中用到了手势操作,键盘回收时还是挺常用的,现在总结下,多谢网络上大神们的分享。

先分享下我在项目中用的代码:

  1. UITapGestureRecognizer * mytap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap_gestureRecognizer:)];
  2. [self addGestureRecognizer:mytap];
  3. [mytap release];
  4. //收回键盘
  5. -(void)tap_gestureRecognizer:(UITapGestureRecognizer *)tap_gest
  6. {
  7. [self.scv_stockPriceTextField resignFirstResponder];
  8. [self.scv_stockAmoutTextField resignFirstResponder];
  9. }
  1.  

  1.  
  1. //单指单击
  2. UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
  3. action:@selector(handleSingleFingerEvent:)];
  4. singleFingerOne.numberOfTouchesRequired = 1; //手指数
  5. singleFingerOne.numberOfTapsRequired = 1; //tap次数
  6. singleFingerOne.delegate = self;
  7. //单指双击
  8. UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
  9. action:@selector(handleSingleFingerEvent:)];
  10. singleFingerTwo.numberOfTouchesRequired = 1;
  11. singleFingerTwo.numberOfTapsRequired = 2;
  12. singleFingerTwo.delegate = self;
  13. //双指单击
  14. UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
  15. action:@selector(handleDoubleFingerEvent:)];
  16. doubleFingerOne.numberOfTouchesRequired = 2;
  17. doubleFingerOne.numberOfTapsRequired = 1;
  18. doubleFingerOne.delegate = self;
  19. UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
  20. action:@selector(handleDoubleFingerEvent:)];
  21. doubleFingerTwo.numberOfTouchesRequired = 2;
  22. doubleFingerTwo.numberOfTapsRequired = 2;
  23. doubleFingerTwo.delegate = self;
  24. //如果不加下面的话,当单指双击时,会先调用单指单击中的处理,再调用单指双击中的处理
  25. [singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];
  26. //同理双指亦是如此
  27. [doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo];
  28. [self.view addGestureRecognizer:singleFingerOne];
  29. [self.view addGestureRecognizer:singleFingerTwo];
  30. [self.view addGestureRecognizer:doubleFingerOne];
  31. [self.view addGestureRecognizer:doubleFingerTwo];
  32. [singleFingerOne release];
  33. [singleFingerTwo release];
  34. [doubleFingerOne release];
  35. [doubleFingerTwo release];

  36. 处理事件的方法,代码:
  37. 1: //处理单指事件
  38. 2: - (void)handleSingleFingerEvent:(UITapGestureRecognizer *)sender
  39. 3: {
  40. 4: if (sender.numberOfTapsRequired == 1) {
  41. 5: //单指单击
  42. 6: NSLog(@"单指单击");
  43. 7: }else if(sender.numberOfTapsRequired == 2){
  44. 8: //单指双击
  45. 9: NSLog(@"单指双击");
  46. 10: }
  47. 11: }
  48. 12: //处理双指事件
  49. 13: - (void)handleDoubleFingerEvent:(UITapGestureRecognizer *)sender
  50. 14: {
  51. 15: if (sender.numberOfTapsRequired == 1) {
  52. 16: //双指单击
  53. 17: NSLog(@"双指单击");
  54. 18: }else if(sender.numberOfTapsRequired == 2){
  55. 19: //双指双击
  56. 20: NSLog(@"双指双击");
  57. 21: }
  58. 22: }

 

将相应代码复制到你的工程中即可使用,由于代码中已经有详细的解释说明,这里就不在重复解释了。

代码中只是列举了单指与双指对于单击或多击的处理,同理多指的操作需修改numberOfTouchesRequired属性,对点击的次数需修改numberOfTapsRequired属性。

对于其他手势例如UISwipeGestureRecognizerUILongPressGestureRecognizer,UILongPressGestureRecognizer 的操作使用类似处理。

 

UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势: 

    1、拍击UITapGestureRecognizer (任意次数的拍击)  
    2、向里或向外捏UIPinchGestureRecognizer (用于缩放)  
    3、摇动或者拖拽UIPanGestureRecognizer  
    4、擦碰UISwipeGestureRecognizer (以任意方向)  
    5、旋转UIRotationGestureRecognizer (手指朝相反方向移动)  
    6、长按UILongPressGestureRecognizer 

对于不同类型的手势识别器,具有不同的配置属性。比如UITapGestureRecognizer,可以配置拍击次数。界面接收到手势之后,可以发送一 个消息,用于处理响应手势动作后的任务。当然,不同的手势识别器,发送的消息方法也会有所不同。

原文链接:http://www.cnblogs.com/jiuyi/p/10345170.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号