UIEvent:事件类。在IOS中将用户的操作封装了一个类是UIEvent。UIEvent根据用户的操作分为三种类型:触摸、晃动、远程控制。
触摸对应的UI类是UITouch。
#import "RootViewController.h"
#import "TouchView.h"
@interface RootViewController ()
@end
@implementation RootViewController
- (void)viewDidLoad {
[super viewDidLoad];
TouchView *touchView = [[TouchView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; // 创建对象
touchView.backgroundColor = [UIColor redColor];
[self.view addSubview:touchView];
[touchView release];
}
#import "TouchView.h"
@implementation TouchView
// 触摸开始时执行该方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// 打印执行代码的行数及执行的方法名,方便跟踪
NSLog(@"%s == %d",__FUNCTION__, __LINE__);
}
// 触摸移动时执行该方法
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
// self.backgroundColor = [UIColor colorWithRed:(arc4random() % 256 / 255.0) green:(arc4random() % 256 / 255.0) blue:(arc4random() % 256 / 255.0) alpha:1];
UITouch *touch = [touches anyObject]; // NSSet 取值方法
CGPoint point1 = [touch locationInView:self.superview]; // 当前点
CGPoint point2 = [touch previousLocationInView:self.superview]; // 前一个点
CGFloat x = point1.x - point2.x;
CGFloat y = point1.y - point2.y;
CGRect frame = self.frame;
frame.origin.x += x;
frame.origin.y += y;
self.frame = frame;
NSLog(@"%s == %d",__FUNCTION__, __LINE__);
}
// 触摸结束时执行该方法
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"%s == %d",__FUNCTION__, __LINE__);
// self.backgroundColor = [UIColor yellowColor];
}
// 触摸被中断时执行该方法
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"%s == %d",__FUNCTION__, __LINE__);
}