美文网首页
事件处理简介

事件处理简介

作者: zhangyajie | 来源:发表于2017-05-25 15:31 被阅读61次

    1.ios当中常用的事件?

    1.触摸事件  2.加速计事件  3.远程控制事件

    2、什么是响应者对象?

    继承了UIResponds的对象我们称它为响应者对象UIApplication、UIViewController、UIView都继承UIResponder因此它们都是响应者对象,都能够接收并处理事件

    3、为什么说继承了UIResponder就能够处理事件?

    因为UIResponder内部提供了以下方法来处理事件如触摸事件会调用以下 法:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

    - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

    加速计事件会调:

    - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event;

    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;

    - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event;

    远程控制事件会调:

    - (void)remoteControlReceivedWithEvent:(UIEvent *)event;

    4.如何监听UIView的触摸事件?

    想要监听UIViiew的触摸事件,首先第一步要定义UIView,因为只有实现了UIResponder的事件方法才能够监听事件.

    UIView的触摸事件主要有:一根或者多根手指开始触摸view,系统会自动调view的下方法.

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    一根或者多根手指在view上移动时,系统会自动调view的下方法

    (随着手指的移动,会持续调该方法,也就是说这个方法会调用很多次)

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

    一根或者多根手指离开view,系统会自动调view的下方法

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

    5、UIView拖拽思路?

    1.定义UIView,实现监听 法.

    2.确定在TouchMove法当中进行操作,因为用户手指在视图上移动的时候才需要移动视图。

    3.获取当前手指的位置和上一个手指的位置.

    4.当前视图的位置=上一次视图的位置-手指的偏移量

    实现关键代码:

    当手指在屏幕上移动时调用持续调

    NSSet:的元素都是无序的.

    NSArray:的有顺序的.

    -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent*)event{

    //1.获取手指的对象

    UITouch*touch = [touchesanyObject];

    //2.获取当前手指所在的点.

    CGPointcurP = [touchlocationInView:self];

    //3.获取手指的上 个点.

    CGPointpreP = [touchpreviousLocationInView:self];//X轴方向偏移量

    CGFloatoffsetX = curP.x- preP.x;//Y轴方向偏移量

    //CGFloatoffsetY = curP.y- preP.y;CGAffineTransformMakeTranslation:会清空上一次的形变.

    //self.transform = CGAffineTransformMakeTranslation(offsetX,

    0);

    self.transform=CGAffineTransformTranslate(self.transform,

    offsetX, offsetY);

    }

    相关文章

      网友评论

          本文标题:事件处理简介

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