touches

1.功能:
手指在屏幕上每一次触摸都会产生一个触摸事件,这些事件会存储在NSSet类型的touches里面,我们可以通过touch方法获取这些触摸事件
注:
(1)touch对象是不需要我们单独创建的,在我们触摸屏幕时就已经产生!所以当我们触摸屏幕,如果写了以下四种方法,就会直接触发事件!
(2)UIImageView 的userInteractionEnabled参数设置为YES,才能触发UIImageView的点击事件

 imageView.userInteractionEnabled = YES;

2.四个代理方法:
(1)touchesBegan方法:

//这个方法是在触摸开始时,调用 这个方法
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch * touch = [touches anyObject];//获取touch对象
    [UIView animateWithDuration:0.3 animations:^{
        imageView.center = [touch locationInView:self.window];
    }];
}

(2)touchesEnded方法:

//这个方法是在,手指离开屏幕时,触发这个方法
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    //可以在这里不使用任何一个事件,只去写我们自己的方法
    [UIView animateWithDuration:0.3 animations:^{
        imageView.center = CGPointMake(160, 300);
    }];  
}

(3)touchesMoved方法:

//这个方法是说,手指在屏幕上移动时,触发这个方法
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    //那么,手指只要在屏幕有偏移那么就调用一次这个方法
    UITouch * touch = [touches anyObject];
    //判断touch的view是否是imageView
    if (touch.view == imageView && touch.phase == UITouchPhaseMoved) {
        imageView.center = [touch locationInView:self.window];} 
}

(4)touchesCancelled方法:

//这个方法是触摸被打断时调用的方法,这个方法在模拟器上测试不了
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    //程序运行过程中,进来电话,短信,推送等优先级比较高的事件
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS中有三类事件:UIEventTypeTouches触摸事件、 UIEventTypeMotion “动作”事...
    WeiHing阅读 37,279评论 7 69
  • -- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实...
    翘楚iOS9阅读 8,152评论 0 13
  • 7、不使用IB是,下面这样做有什么问题? 6、请说说Layer和View的关系,以及你是如何使用它们的。 1.首先...
    AlanGe阅读 4,210评论 0 1
  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 58,889评论 51 604
  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 11,304评论 4 26