事件处理简介
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);
}