`

iOS手势

阅读更多
iOS开发中遇到的手势相关的动作有以下几类(Apple iOS框架提供的简单实现)
UITapGestureRecognizer(包含单击、双击、多次点击等等)
UILongPressGestureRecognizer(长按手势)
UIPanGestureRecognizer(平移手势)
UISwipeGestureRecognizer(手指在屏幕上很快的滑动)
UIPinchGestureRecognizer(手指缩放操作)
UIRotationGestureRecognizer(手指旋转操作)

向指定View添加手势
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanFrom:)];
[self.view addGestureRecognizer:backPanRecognizer];
panRecognizer.maximumNumberOfTouches = 1;
panRecognizer.delegate = self;


从指定view移除手势
[self.view removeGestureRecognizer:backPanRecognizer];

1.点击手势(单击、双击)
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleTap];
singleTap.delegate = self;
[singleTap setNumberOfTapsRequired:1];//1次点击
[singleTap setNumberOfTouchesRequired:1];//1个手指操作

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
[self.view addGestureRecognizer:doubleTap];
[doubleTap setDelegate:self];
[doubleTap setNumberOfTapsRequired:2];//2次点击
[doubleTap setNumberOfTouchesRequired:1];//2个手指操作

[singleTap requireGestureRecognizerToFail:doubleTap];//防止双击触发两次单击事件
[doubleTap requireGestureRecognizerToFail:singleTap];


在hadnleSingleTap:和handleDoubleTap:中进行单击和双击事件的处理

2.长按手势
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
[self.view addGestureRecognizer:longPressGesture];
[longPressGesture setMinimumPressDuration:1.0f];//最短按下持续时间1秒


在handleLongPress:方法中进行长按时间的处理

3.平移手势
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanFrom:)];
[self.view addGestureRecognizer:backPanRecognizer];
[panRecognizer setMaximumNumberOfTouches:1];
[panRecognizer setDelegate:self];


在handlePanFrom:方法中进行平移手势的处理
-(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer{
    //拿到手指目前的位置
    CGPoint location = [recognizer locationInView:self.view];
    CGPoint tranlation = [recognizer translationInView:self.view];
    switch (recognizer.state) {
        //手指动作开始
        case UIGestureRecognizerStateBegan:
//            aView.transform = CGAffineTransformIdentity;
            break;
        //手指动作进行
        case UIGestureRecognizerStateChanged:
            //监听拖动动作
            //如果已经在起始位置则不允许再向右拖动
            if (tranlation.x <= 0) {
                aView.transform = CGAffineTransformMakeTranslation(tranlation.x, 0);
            }
            break;
        //手指动作结束
        case UIGestureRecognizerStateEnded:
        {
            //得到拖动速度
            CGPoint v = [recognizer velocityInView:self.view];
            //拖动速度大于500则直接remove视图
            if (v.x < -500) {
                [aView removeFromSuperView];
            } else {
                if (tranlation.x <= 0) {
                    aView.transform = CGAffineTransformMakeTranslation(tranlation.x, 0);
                }
                //如果手指当前位置大于280像素处,remove视图
                if (location.x < 80) {
                    [aView removeFromSuperView];
                } else {
                    //否则视图回到起始位置
                    [UIView animateWithDuration:0.3 animations:^{
                        aView.transform = CGAffineTransformMakeTranslation(0, 0);
                    }];
                }
            }
        }
            break;
        case UIGestureRecognizerStateCancelled:
        case UIGestureRecognizerStateFailed:
            break;
        default:
            break;
    }
}

4.快速滑动手势
UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[self.view addGestureRecognizer:leftSwipe];
[leftSwipe setDirection:UISwipeGestureRecognizerDirectionLeft];

UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)];
[self.view addGestureRecognizer:rightSwipe];
[rightSwipe setDirection:UISwipeGestureRecognizerDirectionRight];

在handleSwipe:方法中处理快速滑动事件
- (void)handleSwipe:(UISwipeGestureRecognizer *)sender
{
switch (sender.direction) {
        case UISwipeGestureRecognizerDirectionLeft:
        {
            imgView = [[UIImageView alloc] initWithFrame:CGRectMake(kDeviceWidth, 0, 120, 160)];
            [imgView setImage:[UIImage imageNamed:@"redGirl.jpg"]];
            [self.view addSubview:imgView];
            [UIView animateWithDuration:0.5f animations:^{
                imgView.frame = CGRectMake(0, 0, 120, 160);
            } completion:^(BOOL finished) {
            }];
        }
            break;
        case UISwipeGestureRecognizerDirectionRight:
        {
            imgView = [[UIImageView alloc] initWithFrame:CGRectMake(-kDeviceWidth, 0, 120, 160)];
            [imgView setImage:[UIImage imageNamed:@"whiteGirl.jpg"]];
            [self.view addSubview:imgView];
            [UIView animateWithDuration:0.5f animations:^{
                imgView.frame = CGRectMake(0, 0, 120, 160);
            } completion:^(BOOL finished) {
            }];
        }
            break;
        default:
            break;
    }
}

5.缩放手势和旋转手势,待利用到再补充
分享到:
评论

相关推荐

    ios手势图形解锁完整Demo

    本Demo,"ios手势图形解锁完整Demo",提供了一个实现这一功能的实例,使得开发者可以快速理解和应用这种技术。 一、手势图形解锁原理 手势图形解锁的核心原理是利用触摸屏设备的多点触控能力,记录用户在预设画布上...

    IOS手势解锁

    **iOS手势解锁详解** 在iOS操作系统中,手势解锁是一种安全且直观的设备解锁方式,它允许用户通过在触摸屏上绘制特定的图案来解锁设备。本文将深入探讨iOS手势解锁的功能、工作原理以及如何实现这一功能。 ### 一...

    iOS手势集合

    iOS手势主要包括基本手势、复合手势以及自定义手势。 1. 基本手势: - `UIPanGestureRecognizer`: 平移手势,用于检测用户在屏幕上进行的平移操作。 - `UIPinchGestureRecognizer`: 捏合手势,用于识别用户的手指...

    ios手势操作演示

    本项目"ios手势操作演示"是一个使用Swift编写的示例,旨在帮助开发者理解和应用iOS中的手势识别技术。 Swift是Apple为iOS、macOS、watchOS和tvOS平台推出的一种强大且易学的编程语言,它具有现代编程语言的特点,如...

    iOS手势(全)

    在iOS平台上,手势是用户与设备交互的重要方式,它们提供了直观、自然的界面操作体验。以下是对iOS中主要手势的详细解析: 1. **轻拍(Tap)**: 轻拍是最基本的手势,通常用于选择或激活某个元素。用户只需短暂地...

    iOS手势返回上一级

    总的来说,“iOS手势返回上一级”是iOS用户体验的关键组成部分,开发者需要充分理解和掌握其工作原理,以便在应用中实现高效、流畅的导航。通过自定义和优化手势,可以进一步提升应用的用户满意度。

    ios手势的用法

    iOS中各种手势的详细用法,包括冲突手势的区分

    ios手势相关资料

    以下是一些关于iOS手势的重要知识点: 1. **UIGestureRecognizer**: 这是iOS中的主要手势类,它提供了一个框架,用于识别并响应各种触摸事件。UIGestureRecognizer有多种子类,如UIPanGestureRecognizer(拖动)、...

    ios 手势解锁实现

    本文将详细解析如何使用Objective-C实现一个iOS手势解锁功能,并基于提供的"GesturePass"压缩包文件进行讲解。 首先,手势解锁的核心在于识别用户在触屏上绘制的特定图案。在Objective-C中,我们可以利用`...

    ios手势代码demo大全

    ios 手势代码 demo 大全 ios手势代码demo大全

    iOS手势代码(旋转、缩放、拖拽等)

    iOS手势识别为开发者提供了丰富的用户交互可能性。通过`UIGestureRecognizer`及其子类,我们可以轻松地添加点击、双击、旋转、缩放和拖拽等手势到应用中,从而提升用户体验。在实际项目中,根据需求调整手势的灵敏度...

    IOS 手势锁屏

    本文将深入探讨iOS手势锁屏的相关知识点。 首先,我们要了解手势解锁的工作原理。手势锁屏是基于触摸屏设备的多点触控技术,用户在预设的解锁区域内绘制特定的轨迹,系统会记录并识别这个轨迹作为解锁密码。当用户...

    ios手势解锁相关代码_很好.zip

    这个压缩包“ios手势解锁相关代码_很好.zip”很可能包含了一个实现这一功能的示例项目,名为“GestureLockDemo”。下面,我们将深入探讨iOS手势解锁背后的技术细节、实现方法以及相关的编程知识点。 首先,我们要...

    ios手势程序

    在这个"ios手势程序"中,我们将会探讨以下几个基本的手势实现: 1. **轻扫(Swipe)手势**: 文件名:`DroppableView_10826.zip` 轻扫手势允许用户通过快速滑动手指来触发特定的事件。在iOS中,有两种主要类型的...

    iOS 手势密码 源码

    总之,这个手势密码源码提供了了解和学习iOS手势验证机制的良好机会。开发者可以借此深入理解触摸事件处理、自定义视图绘制以及用户交互设计等方面的知识,同时也可以根据自身项目需求进行相应的扩展和优化。

    IOS应用源码之IOS手势滑动截屏.zip

    这个“iOS应用源码之iOS手势滑动截屏”压缩包中包含的资源,显然是一份用于实现这一功能的源代码。这份源码可以帮助开发者深入了解如何在自己的iOS应用中集成手势识别和屏幕截图的机制,提升用户体验。 首先,我们...

    iOS 手势密码,很实用的一个库.zip

    在iOS平台上,GesturePassword是基于Swift语言实现的一个开源项目,旨在为开发者提供一种简单的方法来集成手势密码功能。这个库使得用户可以自定义图形密码,如绘制特定形状或连接多个点,从而提高用户体验并增强...

    ios拖动手势展开菜单栏

    首先,我们来讨论iOS手势识别。iOS系统支持多种内置手势,如轻触(Tap)、滑动(Swipe)、捏合(Pinch)、旋转(Rotate)以及拖放(Drag & Drop)。在本例中,主要涉及的是滑动手势(Swipe gesture),尤其是水平...

    ios 手势右滑视觉差 效果类似微信QQ等返回操作

    在iOS应用开发中,手势识别和导航控制是用户体验的关键组成部分。标题提到的“ios 手势右滑视觉差 效果类似微信QQ等返回操作”是iOS应用中常见的一种交互设计,模仿了如微信、QQ等流行应用的交互模式,为用户提供更...

    ios手势和触摸代码完整版.7z

    这份"ios手势和触摸代码完整版.7z"资源很可能是包含了实现这些功能的各种示例代码,帮助开发者深入理解和实践。 首先,我们要了解iOS中的基本触摸事件。iOS设备的屏幕可以检测到多个触摸点,这些触摸事件主要分为...

Global site tag (gtag.js) - Google Analytics