标签:
1 //触摸四个方法 2 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 3 UITouch *touch = [touches anyObject]; 4 CGPoint point = [touch locationInView:self]; 5 NSLog(@"V开始触摸 %@",NSStringFromCGPoint(point) ); 6 7 8 9 } 10 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 11 12 UITouch *touch = [touches anyObject]; 13 CGPoint point = [touch locationInView:self]; 14 NSLog(@"MVC 滑动 %@",NSStringFromCGPoint(point) ); 15 float a = point.x; 16 float b = point.y ; 17 float c = point.x; 18 self.backgroundColor = [UIColor colorWithRed:a/375.0 green:b/667.0 blue:c/375.0 alpha:1]; 19 self.frame = CGRectMake(100, 100, a, b); 20 21 22 } 23 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 24 UITouch *touch = [touches anyObject]; 25 CGPoint point = [touch locationInView:self]; 26 NSLog(@"V停止触摸%@",NSStringFromCGPoint(point)); 27 } 28 - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{ 29 NSLog(@"V触摸取消"); 30 }
1 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 2 NSLog(@"开始摇动"); 3 } 4 5 - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 6 NSLog(@"取消摇动"); 7 } 8 9 - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 10 NSLog(@"停止摇动"); 11 12 13 a= a +1; 14 15 for (int i = 0; i < 7; i++) { 16 UILabel *v = (UILabel *)[self.view viewWithTag:a]; 17 v.text = [NSString stringWithFormat:@"%d",arc4random() % 7]; 18 v.font =[UIFont fontWithName:@"DBLCDTempBlack" size:65]; 19 v.textAlignment = NSTextAlignmentCenter; 20 21 if (a == 7) { 22 v.text = @"??"; 23 24 25 } 26 } 27 28 29 30 31 32 33 }
发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件 队列中,UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow)
不接收用户交互
userInteractionEnabled = NO
隐藏
hidden = YES
透明
alpha = 0.0 ~ 0.01
提示:UIImageView的userInteractionEnabled默认就是NO,因此UIImageView以及它的子控件默认是不能接收触摸事件的
主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件,但是这仅仅是整个事件处理过程的第一步 找到合适的视图控件后,就会调用视图控件的touches方法来作具体的事件处理
touchesBegan…
touchesMoved…
touchedEnded… 这些touches方法的默认做法是将事件顺着响应者链条向上传递,将事件交给上一个响应者进行处理
先将事件对象由上往下传递(由父控件传递给子控件),找到最合适的控件来处理这个事件。 调用最合适控件的touches….方法 如果调用了[super touches….];就会将事件顺着响应者链条往上传递,传递给上一个响应者 接着就会调用上一个响应者的touches….方法
如果当前这个view是控制器的view,那么控制器就是上一个响应者 如果当前这个view不是控制器的view,那么父控件就是上一个响应者
如果view是控制器的view,就传递给控制器;如不是,则将其传递给它的父视图 在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理 如果window对象也不处理,则其将事件或消息传递给UIApplication对象 如果UIApplication也不能处理该事件或消息,则将其丢弃
标签:
原文地址:http://www.cnblogs.com/dingjianjaja/p/4840781.html