觸摸和手勢

//

//  ViewController.m

//  UITouchTEST

//

//  Created by  on 16/7/21.

//  Copyright © 2016. All rights reserved.

//


#import "ViewController.h"


@interface ViewController (){

    UIView *_view;

}

//初始化數據源

-(void)initializeDataSource;

//初始化用戶界面

-(void)initializeUserInterface;


-(void)processGesture:(UIGestureRecognizer *)gesture;


@end


@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    [selfinitializeDataSource];

    [selfinitializeUserInterface];


}


//初始化數據源

-(void)initializeDataSource{

    

}


//初始化用戶界面

-(void)initializeUserInterface{

    

    _view = [[UIViewalloc]initWithFrame:CGRectMake(0,0, 200,200)];

    [_viewsetCenter:CGPointMake(CGRectGetMidX(self.view.bounds),CGRectGetMidY(self.view.bounds))];

    [_viewsetBackgroundColor:[UIColorredColor]];

    [self.viewaddSubview:_view];

    

    

    UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(processGesture:)];

    [tap setNumberOfTapsRequired:2];

    

    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(processGesture:)];

    

    [_viewaddGestureRecognizer:tap];

    [_viewaddGestureRecognizer:pinch];

    

    

}



//觸摸移動手勢

-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    UITouch *touch = [touchesanyObject];

    if(touch.view==_view){

        CGPoint previousLocation = [touchpreviousLocationInView:_view];

        CGPoint currentLocation = [touchlocationInView:_view];

        CGPoint LocationOffset =CGPointMake(currentLocation.x-previousLocation.x, currentLocation.y-previousLocation.y);

        

        [_viewsetCenter:CGPointMake(_view.center.x+LocationOffset.x,_view.center.y+LocationOffset.y)];

    }

}


-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    [UIViewbeginAnimations:@"回到中心"context:nil];

    [UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];

    [UIViewsetAnimationDuration:0.6];

    [_viewsetCenter:CGPointMake(CGRectGetMidX(self.view.bounds),CGRectGetMidY(self.view.bounds))];

    [UIViewcommitAnimations];

}



//proce

-(void)processGesture:(UIGestureRecognizer *)gesture{

    

    if([gestureisKindOfClass:[UITapGestureRecognizerclass]]){

        NSLog(@"輕巧兩次");

    }elseif([gestureisKindOfClass:[UIPinchGestureRecognizerclass]]){

        staticCGFloat previousScale;

        UIPinchGestureRecognizer *pinch = (UIPinchGestureRecognizer *)gesture;

        

        if(pinch.state ==UIGestureRecognizerStateBegan){

            previousScale = pinch.scale;

        }

        elseif(pinch.state==UIGestureRecognizerStateChanged){

            _view.transform =CGAffineTransformScale(_view.transform, (pinch.scale-previousScale)/2+1, (pinch.scale-previousScale)/2+1);

            

            previousScale = pinch.scale;

        }

        

        

    }

    else{

        NSLog(@"未識別的手勢");

    }

    

    

    

}






@end


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章