TouchView
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__); }