热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

IOS疯狂基础之GestureRecognizer手势

在Iphone开发中,像UIimageView是不支持点击的,但往往我们却有很多能在Image上点击的需求,比如一个自定义的TableViewCell中放入三个UIimageView

在Iphone开发中,像UIimageView是不支持点击的,但往往我们却有很多能在Image上点击的需求,比如一个自定义的TableViewCell中放入三个UIimageView,在这里命名为imageleft,imagemiddle,imggeright,当tableView加载后,单击tableView中某一行中的image,我便进入该图片的详细页面。当然,现在的最新版支持手势控件,只要拖一个这样的控件到UIImageView上,实现它的委托就可以了。若版本太低不支持这样的控件,你便只好老老实实的亲手写代码了。

UITapGestureRecognizer和UIButton的点击事件冲突的解决办法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view isKindOfClass:[UIButton class]])
    {
        return NO;
    }
    return YES;
}


常用手势

UITapGestureRecognizer

  • UITapGestureRecognizer
  • UIPinchGestureRecognizer
  • UIRotationGestureRecognizer
  • UISwipeGestureRecognizer
  • UIPanGestureRecognizer
  • UILongPressGestureRecognizer


分別是 Tap(点一下)、Pinch(二指往內或往外拨动)、Rotation(旋转)、Swipe(滑动,快速移动)、Pan (拖移,慢速移动)以及 LongPress(长按)。

以下是UITapGestureRecognizer 的用法 


//单指单击

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: //单指双击

9: UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self

10: action:@selector(handleSingleFingerEvent:)];

11: singleFingerTwo.numberOfTouchesRequired = 1;

12: singleFingerTwo.numberOfTapsRequired = 2;

13: singleFingerTwo.delegate = self;

14:

15: //双指单击

16: UITapGestureRecognizer *doubleFingerOne= [[UITapGestureRecognizer alloc] initWithTarget:self

17: action:@selector(handleDoubleFingerEvent:)];

18: doubleFingerOne.numberOfTouchesRequired = 2;

19: doubleFingerOne.numberOfTapsRequired = 1;

20: doubleFingerOne.delegate = self;

21:

22: UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self

23:    action:@selector(handleDoubleFingerEvent:)];

24: doubleFingerTwo.numberOfTouchesRequired = 2;

25: doubleFingerTwo.numberOfTapsRequired = 2;

26: doubleFingerTwo.delegate = self;

27:

28: //如果不加下面的话,当单指双击时,会先调用单指单击中的处理,再调用单指双击中的处理

29: [singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];

30: //同理双指亦是如此

31: [doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo];

32:

33: [self.view addGestureRecognizer:singleFingerOne];

34: [self.view addGestureRecognizer:singleFingerTwo];

35: [self.view addGestureRecognizer:doubleFingerOne];

36: [self.view addGestureRecognizer:doubleFingerTwo];

37:

38: [singleFingerOne release];

39: [singleFingerTwo release];

40: [doubleFingerOne release];

41: [doubleFingerTwo release];

处理事件的方法,代码:

1: //处理单指事件

2: - (void)handleSingleFingerEvent:(UITapGestureRecognizer *)sender

3: {

4: if (sender.numberOfTapsRequired == 1) {

5: //单指单击

6: NSLog(@"单指单击");

7: }else if(sender.numberOfTapsRequired == 2){

8: //单指双击

9: NSLog(@"单指双击");

10: }

11: }

12: //处理双指事件

13: - (void)handleDoubleFingerEvent:(UITapGestureRecognizer *)sender

14: {

15: if (sender.numberOfTapsRequired == 1) {

16: //双指单击

17: NSLog(@"双指单击");

18: }else if(sender.numberOfTapsRequired == 2){

19: //双指双击

20: NSLog(@"双指双击");

21: }

22: }






推荐阅读
  • iOS开发 - 解决导航栏子视图损坏问题
    本文介绍了一个在Xcode 5.0.2和iOS 7模拟器环境下,使用Storyboard创建CoreData CRUD应用时遇到的导航栏子视图损坏问题及其解决方案。 ... [详细]
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 在需要对iPhone进行全面备份时,有时会遇到电脑无法识别设备的情况。本文将详细分析导致这一问题的可能原因,并提供有效的解决方案。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • iPhone 11的几大痛点与小聪明:苹果的精明策略分析
    面对一个直截了当的问题:新款iPhone 11没有5G功能,你会购买吗?在这一年里,苹果面临了自初代iPhone发布以来最尴尬的业绩挑战。尽管iPhone在过去十年中持续热销,推动苹果成为全球市值最高的公司之一,但苹果现在正通过大力拓展服务业务来应对这一困境。此外,苹果还采取了一系列精明的策略,如优化成本控制和提升用户体验,以保持其市场竞争力。 ... [详细]
  • 最新消息显示,苹果即将发布的新一代iOS系统可能将集成先进的3D地图功能。这一创新技术由C3 Technologies公司开发,曾在今年3月被TechCrunch报道。用户可以通过该功能获得更加真实和沉浸式的地图体验,包括详细的建筑物模型和街景视图。视频演示展示了其卓越的视觉效果和交互性。 ... [详细]
  • 对于希望在未越狱的iOS设备上修改Hosts文件的苹果用户来说,了解文件的具体位置和操作步骤至关重要。本文将详细介绍如何通过安装最新版本的iTunes来实现这一目标,并提供实用的操作指南,帮助用户轻松完成Hosts文件的编辑。 ... [详细]
  • 推荐一款出色的移动应用原型设计工具——Tiggr(http://gotiggr.com)。该工具基于Flash技术开发,支持Web、iPhone和Android等多种平台的原型设计。虽然需要注册账号才能使用,但其强大的功能和易用性使其成为开发者和设计师的理想选择。 ... [详细]
  • Apple Watch心电图功能或将在欧洲地区推出
    据最新消息,苹果公司计划在欧洲地区推出Apple Watch的心电图(ECG)功能。这一功能最早于2018年12月通过iOS 5.1.2系统更新在Apple Watch Series 4上实现,使其具备了医疗级心电图监测能力。该功能能够帮助用户实时监测心脏健康状况,及时发现潜在的心律不齐等问题,进一步提升用户的健康管理体验。 ... [详细]
  • 产业链观察 | H公司持续努力,全国产化手机或将成为现实
    产业链观察 | H公司持续努力,全国产化手机或将成为现实 ... [详细]
  • 《大唐双龙传》第六十二卷第七章 宝库再探,讲述了主角们再次进入神秘宝库的冒险经历。本文来源于ITPUB博客,链接:http://blog.itpub.net/8591181/viewspace-894942/。 ... [详细]
  • CSS 百分比单位的取值依据是什么
    本文详细探讨了 CSS 中百分比单位的取值依据,包括不同定位方式下的包含块概念及其应用。通过具体的示例和代码,帮助读者更好地理解和掌握这一知识点。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 如何在电脑上设置两小时后自动关机及解决无法开机的问题 ... [详细]
author-avatar
西单女孩超炫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有