触摸事件01

作者: 大玲_ | 来源:发表于2015-04-12 22:31 被阅读161次

触摸事件01

这篇文章讲一些触摸事件的基本知识和两个简单的案例供参考
1. 移动uiview
2. 根据移动绘制星星


移动UIview的案例

可识别的三类输入事件

  1. 触摸事件
  2. 运动(加速计)事件
  3. 远程控制事件

触摸事件:指的是单点和多点触摸事件
运动(加速计):例如微信的摇一摇事件
远程控制:例如耳机线空歌曲(播放,暂停)

响应者对象

在ios开发中并不是所有的对象都能处理触摸事件,只有继承了UIResponder的对象才能处理和接收触摸事件。我们称之为响应者对象

四个不同的方法处理触摸事件

touchesBegin、touchesMoved 、touchesEnd、touchesCanceled(这四个方法都有 touches和event参数)

  • touchesBegin:触摸时间开始
  • touchesMoves:触摸事件的移动事件
  • tocuhesEnd:触摸事件的结束事件
  • touchesCanceled:触摸事件被取消,比如正在触摸时电话打进来,此时触摸会被取消。

UITouch类中包含的两个成员函数:
*- (CGPoint) locationInView:(UIView *)view 针对view的坐标系
*-(CGPoint) previousLocationInView:(UIView *)view 记录前一个坐标

实现效果

最终效果

主要代码

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"touchesMoves%@",touches);
    //1.从nsset中去除uitouch对象
    //取出集合的一个对象,通常实在单点触摸时
    UITouch *touch = [touches anyObject];
    
    //2.知道手指触摸的位置
    CGPoint location = [touch locationInView:self.view];
    
    //2.1 对位置进行修正  使用previousLocationInView对位置进行修正
    CGPoint plocation = [touch previousLocationInView:self.view];
    CGPoint deltaP = CGPointMake(location.x - plocation.x, location.y-plocation.y);
    //3.设置红色视图的位置
    CGPoint newCenter = CGPointMake(self.redView.center.x +deltaP.x, self.redView.center.y+deltaP.y);
    [self.redView setCenter:newCenter];
    
}

中间的修正部分为 防止 第一次移动时的跳动问题,算出相对的专心点

第二个绘制轨迹的案例

实现效果

多点触控和绘制轨迹

这个案例主要是多点触控

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSInteger i = 0;
    //遍历touches集合 来添加图像
    for (UITouch *touch in touches) {
        UIImageView * imageView = [[UIImageView alloc]initWithImage:self.images[i]];
        
        CGPoint location = [touch locationInView:self.view];
        [imageView setCenter:location];
        [self.view addSubview:imageView];
        [UIView animateWithDuration:2.0f animations:^{
            [imageView setAlpha:0.5f];
            
        }completion:^(BOOL finished) {
            [imageView removeFromSuperview];
        }];
        i++;
    }

    NSLog(@"%@",touches);
}

谢谢........
write by Seven

相关文章

网友评论

    本文标题:触摸事件01

    本文链接:https://www.haomeiwen.com/subject/mjvxfttx.html