iOS UI05_手势识别器

手势:点击,长按,旋转,捏合,拖拽,清扫,清扫的方向

//
//  MainViewController.m
//  UI05_手势识别器
//
//  Created by dllo on 15/8/4.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import "MainViewController.h"

@interface MainViewController ()
@property(nonatomic,retain)UIImageView *imageView;
@property(nonatomic,retain)UIAlertView *alertView;
@end

@implementation MainViewController
-(void)dealloc
{
    [_imageView release];
    [_alertView release];
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //UIImageView
    UIImage *image=[UIImage imageNamed:@"footRight_03.jpg.jpg"];
    self.imageView=[[UIImageView alloc] initWithImage:image];
    self.imageView.frame=CGRectMake(50, 100, 300, 400);
    [self.view addSubview:self.imageView];
    [_imageView release];

    //把图片的用户交互打开,默认是关闭的,此外还有一个控件是label
    self.imageView.userInteractionEnabled=YES;

    //手势的使用
    //1.点击
    UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
    //设置点击几次才会触发方法
    tap.numberOfTapsRequired=2;
    //设置几根手指进行点击
    tap.numberOfTouchesRequired=2;

    //将手势添加到对应的图片上
    [self.imageView addGestureRecognizer:tap];
    [tap release];
     //2.长按
    UILongPressGestureRecognizer *longPress=[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];
    //设置长按触发的最短时间
    longPress.minimumPressDuration =2;
    //用户手指在长按过程中允许移动的距离
    longPress.allowableMovement=200;
    //把手势添加到图片上
    [self.imageView addGestureRecognizer:longPress];
    [longPress release];

    //3.旋转
    //创建一个旋转的手势
    UIRotationGestureRecognizer *rotation=[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationAction:)];
    //把手势放到对应的图片上
    [self.imageView addGestureRecognizer:rotation];
    //释放
    [rotation release];
    //4.捏合
    //创建
    UIPinchGestureRecognizer *pinch=[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pincheAction:)];
    //添加到图片上
    [self.imageView addGestureRecognizer:pinch];
    //释放
    [pinch release];

    //5.拖拽
    UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
    [self.imageView addGestureRecognizer:pan];
    [pan release];
    //6.清扫
    UISwipeGestureRecognizer *swipe=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];
    [self.imageView addGestureRecognizer:swipe];
    [swipe release];
    //清扫的方向
    swipe.direction=UISwipeGestureRecognizerDirectionUp;
    //屏幕边界手势 iOS7.0之后出现的手势
//    UIScreenEdgePanGestureRecognizer

}

#pragma mark 点击方法
-(void)tapAction:(UITapGestureRecognizer *)tap
{
    NSLog(@"djkdajdo");
    self.imageView.image=[UIImage imageNamed:@"angry_05.jpg"];
}
#pragma mark 长按时响应方法
-(void)longPressAction:(UILongPressGestureRecognizer *)longPress
{
    //长按的状态
//    longPress.state
    //长按之后弹出一个UIAlerView
    if (!self.alertView) {
            self.alertView=[[UIAlertView alloc] initWithTitle:@"404" message:@"报错" delegate:self cancelButtonTitle:@"确认" otherButtonTitles:nil, nil];
        [self.alertView show];
        [_alertView release];
    }

}
#pragma mark 通过图片的旋转手势,让图片发生旋转
-(void)rotationAction:(UIRotationGestureRecognizer *)rotarion
{
    //可以通过手势获取手势添加的视图是哪一个
    UIImageView *imageView=(UIImageView *)rotarion.view;
    //进行旋转的操作
    //通过视图的transform属性,让视图进行旋转
    imageView.transform=CGAffineTransformRotate(imageView.transform,rotarion.rotation);
    rotarion.rotation=0;
}
#pragma mark 通过捏合手势,缩放图片
-(void)pincheAction:(UIPinchGestureRecognizer *)pinche
{
    //通过手势找视图
    UIImageView *imageView=(UIImageView *)pinche.view;
    //通过transform改变图片的尺寸
    imageView.transform=CGAffineTransformScale(imageView.transform, pinche.scale, pinche.scale);
    pinche.scale=1;

}
#pragma mark 通过拖拽手势,让试图随着手势移动而移动
-(void)panAction:(UIPanGestureRecognizer *)pan
{
    UIImageView *imageView=(UIImageView *)pan.view;
    //通过手势获得经过的点
    CGPoint p=[pan translationInView:imageView];
    //设置移动的位置
    imageView.transform=CGAffineTransformTranslate(imageView.transform, p.x, p.y);
    //为了防止手势在操作的时候试图消失
    [pan setTranslation:CGPointZero inView:imageView];
}
#pragma mark 清扫的对应方法
-(void)swipeAction:(UISwipeGestureRecognizer *)swipe
{
    if (swipe.direction == UISwipeGestureRecognizerDirectionUp ) {
        NSLog(@"上");
    }

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 11:07:19

iOS UI05_手势识别器的相关文章

iOS常用手势识别器

手势识别状态: typedef NS_ENUM(NSInteger, UIGestureRecognizerState) { // 没有触摸事件发生,所有手势识别的默认状态 UIGestureRecognizerStatePossible, // 一个手势已经开始但尚未改变或者完成时 UIGestureRecognizerStateBegan, // 手势状态改变 UIGestureRecognizerStateChanged, // 手势完成 UIGestureRecognizerStateE

iOS 手势识别器概述

手势识别器 iOS 手势识别器(UIGestureRecognizer) 点击手势(UITapGestureRecognizer) 滑动手势(UISwipeGestureRecognizer) 旋转手势(UIRotationGestureRecognizer) 捏合手势( UIPinchGestureRecognizer) 长按手势( UILongPressGestureRecognizer) 平移手势( UIPanGestureRecognizer) 屏幕边缘平移手势(UIScreenEdge

我的IOS学习之路(三):手势识别器

在iOS的学习中,对于手势的处理是极为重要的,如对于图片,我们经常需要进行旋转,缩放以及移动等.这里做一下总结,详见代码. 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 UIImage *image = [UIImage imageNamed:@"018.png"]; 5 UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 6 imageView.

iOS开发UI篇—手势识别器(敲击)

iOS开发UI篇—手势识别器(敲击) 一.监听触摸事件的做法 如果想监听一个view上面的触摸事件,之前的做法通常是:先自定义一个view,然后再实现view的touches方法,在方法内部实现具体处理代码 通过touches方法监听view触摸事件,有很明显的几个缺点 (1)必须得自定义view (2)由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件(需要通过代理) (3)不容易区分用户的具体手势行为 iOS 3.2之后,苹果推出

iOS 开发UI中轻拍,长按,旋转手势识别器方法

一.监听触摸事件的做法 如果想监听一个view上面的触摸事件,之前的做法通常是:先自定义一个view,然后再实现view的touches方法,在方法内部实现具体处理代码 通过touches方法监听view触摸事件,有很明显的几个缺点 (1)必须得自定义view (2)由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件(需要通过代理) (3)不容易区分用户的具体手势行为 iOS 3.2之后,苹果推出了手势识别功能(Gesture Rec

iOS开发UI篇—手势识别器(长按+轻扫)

iOS开发UI篇—手势识别器(长按+轻扫) 一.长按事件 1 // 2 // YYViewController.m 3 // 03-长按 4 // 5 // Created by apple on 14-6-19. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYViewController.h" 10 11 @interface YYViewController () 12 @prop

IOS开发UI篇—手势识别器(拖拽+旋转+缩放)

IOS开发UI篇—手势识别器(拖拽+旋转+缩放) 一.拖拽 示例代码: 1 // 2 // YYViewController.m 3 // 06-拖拽事件 4 // 5 // Created by apple on 14-6-19. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYViewController.h" 10 11 @interface YYViewController ()

iOS手势识别器

UIGestureRecognizer UIGestureRecognizer类,用于检测.识别用户使用设备时所用的手势.它是一个抽象类,定义了所有手势的基本行为.以下是UIGestureRecognizer子类,用于处理具体的用户手势行为: UITapGestureRecognizer // 1.单击 UILongPressGestureRecognizer // 3.长按 UISwipeGestureRecognizer // 4.轻扫 UIPanGestureRecognizer // 5

iOS的触摸事件的用法以及和手势识别器的区别

1.首先来介绍下触摸事件和手势识别器的利与弊 触摸事件和手势识别器二者之间有直接的关系 手势识别器是在触摸事件的基础上演变过来的 当我们用到触摸事件时 默认的uiview是没有什么效果的 只能自定义view才能实现事件的触摸 通常用到的方法如下: – touchesBegan:withEvent: – touchesMoved:withEvent: – touchesEnded:withEvent: - touchesCancelled:withEvent: 而手势识别器是在触摸事件的基础上而封