iOS UIGestureRecognizer小结

/**
 *  手势识别器
 1 能够为系统提供的视图对象添加触摸事件的响应方法比如(uiview uilabel uiimageview等)
 2 内部封装了手势识别的过程 只需要把重心放到手势识别之后对应的操作
 */
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor greenColor];

    
    UIView *view = [[UIView alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
    view.backgroundColor = [UIColor brownColor];
    [self.view addSubview:view];
    [view release];
    UIButton *goBack = [UIButton buttonWithType:UIButtonTypeSystem];
    goBack.frame = CGRectMake(20, 20, 60, 40);
    [goBack setTitle:@"GO" forState:UIControlStateNormal];
    [view addSubview:goBack];
    [goBack addTarget:self action:@selector(gun:) forControlEvents:UIControlEventTouchUpInside];

//    UIGestureRecognizer 是手势识别器的一个抽象的基类 只提供手势识别器的基本功能 使用具体子类(7大子类)
//        //轻拍手势
//    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTapGesture:)];
    设置轻拍的次数
//    tap.numberOfTapsRequired = 1;
    设置轻拍时需要手指的个数
//    tap.numberOfTouchesRequired = 2;
    给视图添加手势
//    [view addGestureRecognizer:tap];
//    [tap release];

//    长按手势
//    UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPressGesture:)];
//    设置长按手势 触发的最短时间
//    longpress.minimumPressDuration = 2;
//    [view addGestureRecognizer:longpress];
//    [longpress release];
//    清扫手势
//    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeGesture:)];
//    设置左右方向都存在只要枚举值里有左移或者右移运算符 表示 可以按位或 同时存在
//    上下和左右在一个手势识别器中不能同时存在  (若想同时存在 则创建两个清扫手势对象)
//    swipe.direction =    UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft;
//    [view addGestureRecognizer:swipe];
//    [swipe release];
//    
//    平移手势
//    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanGesture:)];
//    [view addGestureRecognizer:pan];
//    [pan release];
//
//    捏合手势
//    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinchGesture:)];
//    [view addGestureRecognizer:pinch];
//    [pinch release];
    
//    旋转手势
//    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleRotationGesture:)];
//    [view addGestureRecognizer:rotation];
//    [rotation release];
    
    //屏幕边缘手势
    UIScreenEdgePanGestureRecognizer *screenEdgePan = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(handleScreenEdgePanGesture:)];
    screenEdgePan.edges = UIRectEdgeLeft;

    [view addGestureRecognizer:screenEdgePan];
    [screenEdgePan release];
}
-(void)gun:(UIButton *)butten{
    butten.superview.frame = [[UIScreen mainScreen] bounds];
}
-(void)handleScreenEdgePanGesture:(UIScreenEdgePanGestureRecognizer *)screenEdgePan{
    CGPoint point = [screenEdgePan translationInView:screenEdgePan.view];
    screenEdgePan.view.transform = CGAffineTransformTranslate(screenEdgePan.view.transform, point.x, 0);
    [screenEdgePan setTranslation:point inView:screenEdgePan.view];
}
-(void)handleRotationGesture:(UIRotationGestureRecognizer *)rotation{
    rotation.view.transform = CGAffineTransformRotate(rotation.view.transform, rotation.rotation);
    //旋转角度清零
    rotation.rotation = 0.0;
}
-(void)handlePinchGesture:(UIPinchGestureRecognizer *)pinch{
    pinch.view.transform = CGAffineTransformScale(pinch.view.transform, pinch.scale, pinch.scale);
    //把比例置 1
    pinch.scale = 1.0;
}
-(void)handlePanGesture:(UIPanGestureRecognizer *)pan{
    CGPoint point = [pan translationInView:pan.view];
    pan.view.transform = CGAffineTransformTranslate(pan.view.transform, point.x, point.y);
    //将之前增量清零
    [pan setTranslation:CGPointZero inView:pan.view];
    
}
-(void)handleSwipeGesture:(UISwipeGestureRecognizer *)swipe{
    swipe.view.backgroundColor = [UIColor randomColor];
}
-(void)handleTapGesture:(UITapGestureRecognizer *)tap{
    tap.view.backgroundColor = [UIColor randomColor];
}


-(void)handleLongPressGesture:(UILongPressGestureRecognizer *)longPress{
    //当识别到长按手势触发(也就是长按时间到达后)
    if (UIGestureRecognizerStateBegan == longPress.state) {
         longPress.view.backgroundColor = [UIColor randomColor];
    }
   
    
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值