1、事件(UIEvent),是由硬件设备捕捉到用户对设备的操作,把这个操作抽象成一个事件对象
UIView是支持触摸的,由于UIView 内部没有实现跟触摸相关的方法,所以我们再点击UIView创建其子类进行方法实现
2、一般准备做题思路:先在 AppDelegate.m中建立一个 TouchVC对象
TouchViewController *touchVC = [[ TouchViewController alloc]init];
//将touchVC指定self.window的为根视图控制器
self.window.rootViewController = touchVC;
然后在 TouchViewController.m中设置颜色
self.view.backgroundColor = [ UIColor yellowColor];
————————————————————————————
以上方法为通常准备方法:
第一类型:点击移动视图
第二类型:捏合视图对象
————————————————————————————
首先总结点击移动视图:
TouchView.m
//如果想让一个视图对象对触摸事件作出反应,需要在这个类中的.m文件中实现跟触摸相关一些方法
//当手指在视图范围内移动的时候触发
- (void)touchesMoved:(NSSet*)touches withEvent:( UIEvent *)event{
// self.backgroundColor = [UIColor randomColor];
self.center = CGPointMake(arc4random_uniform(220 - 100 + 1) + 100, arc4random_uniform(468 - 100 + 1) +100);
//取出手指对像
UITouch *f = [touches anyObject];
//当前手指的 位置
CGPoint location = [f locationInView:self];
//之前手指位置
CGPoint previousLocation = [f previousLocationInView:self];
CGPoint center = self.center;
CGFloat dx = location. x - previousLocation. x;
CGFloat dy = location. y - previousLocation. y;
self.center = CGPointMake(center.x + dx, center. y + dy);
- (void)touchesMoved:(NSSet
TouchView.m
- (void)touchesMoved:(NSSet *)touches withEvent:( UIEvent *)event
{
//1.获取手指对象
UITouch *finger = [touches anyObject];
{
}
@end
——————————————————————————————————————————
第二种类型捏合视图对象:
首先要把默认的单触点关掉
PinchView.m 继承自UIView
-(instancetype)initWithFrame:(CGRect)frame{
if ( self = [ super initWithFrame:frame]) {
//ios支持多点触摸,只是默认是单点触摸
self.multipleTouchEnabled = YES;
}
return self;
}
- (void)touchesMoved:(NSSet *)touches withEvent:( UIEvent *)event{
//如果集合中touch集合中手指对象个数为1,就直接返回touchsMoved方法
if ( 1 == touches. count) {
return;//结束方法
} else{
//得到集合中所有手指对象,并使用数组存储(数组有序)
}
- (CGFloat)distanceFromeFirstPoint : (CGPoint)firstPoint
}
================================================================================
响应者链:
AppDelegate.m
//创建 Responder对象
ResponderViewController.m
1、 UIResponder 响应者类,继承自NSObject,它是一个响应者的基类,它提供了一些处理事件的方法
//什么是响应者(响应者对象):1.继承自UIResponder 2.能对ios事件中(触摸事件,晃动事件,远程事件)做出响应的对象就叫做响应者
// UILabel ,UIImageView 默认用户交互是关闭的
响应者链:确定事件作用的对象时,UIAppcation --->UIAppcationDelegate--->window--->视图控制器--->视图控制器上的子视图
响应事件:(有大到小)视图控制器上的子视图--->视图控制器--->window--->UIAppcationDelegate---UIAppcation 如果都不处理这个事件,事件就会被丢弃
ResponderView.m
}
ResponderView.m
- (void)touchesBegan:(NSSet *)touches withEvent:( UIEvent *)event{
==============================================
欢迎学习本文,未经博主许可,禁止转载!