触摸事件&手势识别

  1. 触摸事件&手势识别

1> 4个触摸事件,针对视图的
2> 6个手势识别(除了用代码添加,也可以用Storyboard添加)

附加在某一个特定视图上的,其中需要注意轻扫手势通常会附加到根视图上。

  • 大部分操作,都会在touchesBegan事件中处理,以防夜长梦多!
  • touchesEnd事件通常用于处理touchesMoved事件中的收尾工作!

3> 响应者链条,目的是为了让大家能够理解手势触摸事件的传递过程

以下是我自己学习触摸事件&手势识别的小案例,关于ios动画这一块我将不断更新,欢迎关注 ,有什么不懂的问题可以联系我QQ:624204727,或者发邮件给我:[email protected] .欢迎一起探讨

下面部分是我小案例中的代码,貌似你们看不懂哦!!!

<!-- lang: cpp -->
#pragma mark - 开始
  • (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event
    {
    NSLog(@“touchesBegan %@“, touches);
    }

pragma mark - 移动

  • (void)touchesMoved:(NSSet )touches withEvent:(UIEvent )event
    {
    NSLog(@“touchesMoved”);

    // 1. 获取到集合中的触摸对象
    UITouch *touch = [touches anyObject];
    // 2. 获取手指所在的位置
    CGPoint location = [touch locationInView:self.view];

    // 根据运行发现,手指第一次移动时,红色视图会出现跳跃的情况,会影响用户的使用
    // 1) 取出前一次的手指位置
    CGPoint preLocation = [touch previousLocationInView:self.view];

    // 2) 计算两次手指之间的距离差值
    CGPoint offset = CGPointMake(location.x - preLocation.x, location.y - preLocation.y);
    // 3) 修正红色视图的中心点
    CGPoint center = CGPointMake(redView.center.x + offset.x, redView.center.y + offset.y);

    // 3. 设置红色视图的位置
    self.redView.center = center;
    }

pragma mark - 结束

  • (void)touchesEnded:(NSSet )touches withEvent:(UIEvent )event
    {
    NSLog(@“touchesEnded”);
    }

pragma mark - 被取消

  • (void)touchesCancelled:(NSSet )touches withEvent:(UIEvent )event
    {
    NSLog(@“此事件不易调试”);
    }

你可能感兴趣的:(手势识别,触摸事件)