事件---触摸、运动、遥控

触摸事件,有屏幕捕捉到的用户对屏幕的操作(点击,双击,长按,滑动,捏合,)

APP中使用最多的就是触摸事件,基本空间都封装了触摸方法。
从下面的几个代理方法中可以获取触摸状态,并且做出交互。
下面的代码是对一个基础控件的一个封装,改变中心点

//触摸开始
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    //冲突,要添加原来自带的手势
    [super touchesBegan:touches withEvent:event];
    //获取触摸对象
    UITouch *touch = [touches anyObject];
    //记录触摸开始的位置
    self.startPoint = [touch locationInView:self];
}
//触摸移动
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [super touchesMoved:touches withEvent:event];
    //计算手指移动距离
    UITouch *touch = [touches anyObject];
    //手指现在的位置
    CGPoint currentPoint = [touch locationInView:self];
    //计算x,y的差值
    CGFloat xChange = currentPoint.x - self.startPoint.x;
    CGFloat yChange = currentPoint.y - self.startPoint.y;
    //改变中心点
    self.center = CGPointMake(self.center.x + xChange, self.center.y + yChange);
    //打印坐标点
    NSLog(@"移动%@", NSStringFromCGPoint(self.center));
}
//触摸结束
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    NSLog(@"结束%@", NSStringFromCGPoint(self.center));
}

运动事件,由加速计捕捉到的用户操作(典型的是:微信摇一摇)(计步)

一般是通过晃动,在代理方法中获取摇晃状态,进行交互,最典型的就是微信摇一摇,下面的代码是根据晃动随机的改变界面颜色

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    NSLog(@"摇晃开始");
} 

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    NSLog(@"摇晃结束");
    self.view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 / 255.0 blue:arc4random() % 256 / 255.0 alpha:arc4random() % 256 / 255.0];
}

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    NSLog(@"摇晃取消");
}

遥控事件,例如耳机线控,蓝牙,遥控器
这种不在这里多做解释,有兴趣的读者可以查找资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 6,133评论 4 26
  • 在开发过程中,大家或多或少的都会碰到令人头疼的手势冲突问题,正好前两天碰到一个类似的bug,于是借着这个机会了解了...
    闫仕伟阅读 5,431评论 2 23
  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 58,072评论 51 603
  • -- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实...
    翘楚iOS9阅读 3,008评论 0 13
  • 本周私塾学习的书籍《博弈论》,讲真,我个人不喜欢这样的文章,可能因为我懒动脑,所以在写这篇读后感我也是一拖再拖。 ...
    resilience青柠阅读 357评论 0 0