事件处理简介

2017-05-25  本文已影响61人  zhangyajie

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);

}

上一篇下一篇

猜你喜欢

热点阅读