你的位置:首页 > 操作系统

[操作系统]手势与触控


 UIImageView *imgView=[[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 75, 75)];

    imgView.image=[UIImage imageNamed:@"a"];

    imgView.tag=200;

    [self.view addSubview:imgView];

    

    //设置允许触控和执行手势

    imgView.userInteractionEnabled=YES;

    

    //创建点击手势

    UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGestureClick:)];

    //将创建的点击手势添加到图片对象

    [imgView addGestureRecognizer:tap];

    

    

    //创建拖拽手势

    UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGestureClick:)];

    [imgView addGestureRecognizer:pan];

    

    

    //创建长按手势

    UILongPressGestureRecognizer *longPress=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressGestureClick:)];

    [imgView addGestureRecognizer:longPress];

    

    

    //创建旋转手势

    UIRotationGestureRecognizer *rotate=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotateGestureClick:)];

    [imgView addGestureRecognizer:rotate];

    

    

    

    //创建捏合手势

    UIPinchGestureRecognizer *pinch=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureClick:)];

    //捏合手势可以与其他手势同时执行

    pinch.delegate=self;

    [imgView addGestureRecognizer:pinch];

    

    

    //创建横扫和纵扫手势

    UISwipeGestureRecognizer *hs=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(hsClick:)];

    hs.direction=UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight;

    [self.view addGestureRecognizer:hs];

    

    

    

    UISwipeGestureRecognizer *vs=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(vsClick:)];

    vs.direction=UISwipeGestureRecognizerDirectionDown|UISwipeGestureRecognizerDirectionUp;

    [self.view addGestureRecognizer:vs];

    

    

    

    

}

-(void)vsClick:(UISwipeGestureRecognizer *)vs

{

    NSLog(@"纵扫");

}

 

 

-(void)hsClick:(UISwipeGestureRecognizer *)hs

{

    NSLog(@"横扫");

}

 

 

 

//当执行捏合手势时调用该方法

-(void)pinchGestureClick:(UIPinchGestureRecognizer *)pinch

{

    pinch.view.transform=CGAffineTransformScale(pinch.view.transform, pinch.scale,pinch.scale);

    [pinch setScale:1];

    

 

}

 

 

 

 

//当执行旋转手势时调用该方法

-(void)rotateGestureClick:(UIRotationGestureRecognizer *)rotate

{

    //roate.rotation手指的旋转弧度

    rotate.view.transform=CGAffineTransformRotate(rotate.view.transform, rotate.rotation);

    //保持图片和手指为相同弧度

    [rotate setRotation:0];

}

 

 

 

 

//当执行长按时调用该方法

//参数名称.view为被添加手势的对象

-(void)longPressGestureClick:(UILongPressGestureRecognizer*)loginPress

{

    loginPress.view.center=self.view.center;

}

 

 

 

//当执行拖拽手势时执行该方法

-(void)panGestureClick:(UIPanGestureRecognizer*)pan

{

    //pan.view为手指点击的对象

    pan.view.center= [pan locationInView:self.view];

}

 

 

 

 

 

//参数为图片的手势类型

-(void)tapGestureClick:(UITapGestureRecognizer *)tap

{

    NSLog(@"tap");

}

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

//return YES,允许添加手势的对象多个手势同时执行  

//遵守UIGestureRecognizerDelegate协议

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

{

    return YES;

}

 (触控)

 

//添加图片到页面上

    UIImageView *imgView=[[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 75, 75)];

    imgView.image=[UIImage imageNamed:@"a"];

    [self.view addSubview:imgView];

    imgView.tag=100;

    //允许当前屏幕支持多点触控

    self.view.multipleTouchEnabled=YES;

    //允许图片对象支持手势与触控

    imgView.userInteractionEnabled=YES;

    

    

    

    //设置导航条右侧按钮

    UIBarButtonItem *rightBtn=[[UIBarButtonItem alloc]initWithTitle:@"Next" style:UIBarButtonItemStylePlain target:self action:@selector(rightBtnClick:)];

    self.navigationItem.rightBarButtonItem=rightBtn;

    

}

 

-(void)rightBtnClick:(UIBarButtonItem*)bt

{

    _secondController=[[SecondViewController alloc]init];

    _secondController.navigationItem.title=@"Gesture";

    [self.navigationController pushViewController:_secondController animated:YES];

}

 

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

//触控屏幕时调用该方法

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

 

    NSLog(@"touhesBegan");

    //获得屏幕上的手指个数

    NSLog(@"%i",[touches count]);

}

 

 

//当手指在屏幕上滑动调用该方法

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

    UIImageView *imgView=(UIImageView *)[self.view viewWithTag:100];

    

    for (UITouch *t in touches) {

        //t.view获得手指点击的空件对象

        if (t.view==imgView) {

            //图片根据点到图片上的手指的位置而移动

            imgView.center=[t locationInView:self.view];

        }

    }

    

    

    NSLog(@"moving");

}

 

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

    NSLog(@"end");

}