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

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

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

//触摸开始
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    //冲突,要添加原来自带的手势
    [super touchesBegan:touches withEvent:event];
    //获取触摸对象
    UITouch *touch = [touches anyObject];
    //记录触摸开始的位置
    self.startPoint = [touch locationInView:self];
}
//触摸移动
- (void)touchesMoved:(NSSet *)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 *)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(@"摇晃取消");
}

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

你可能感兴趣的:(事件---触摸、运动、遥控)