ios 学习之Touch

Touch事件,即鼠标处理事件,常用的有四种:

1.触摸开始

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{}

2.触摸取消

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{}

3.触摸结束

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{}

4.触摸移动

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{}

5.多点触摸,要进行如下设置

    [self.view setMultipleTouchEnabled:YES];


一个简单的小应用:视图随鼠标移动的简单动画

@interface ViewController ()
            
@property (nonatomic, strong) UIView *animationView;
@end

@implementation ViewController
            
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSLog(@"%d", [_animationView retainCount]);

    _animationView = [[UIView alloc] initWithFrame:CGRectMake(0, 20, 100, 100)];
    NSLog(@"%d", [_animationView retainCount]);
    [_animationView setBackgroundColor:[UIColor lightGrayColor]];
    [self.view addSubview:_animationView];
}

//点击开始
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //获取touch事件
    UITouch *touch = [touches anyObject];
    
    //获取触摸点的坐标
    CGPoint touchPoint = [touch locationInView:self.view];
    
    [_animationView setCenter:touchPoint];
}

//点击结束
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"cancelled");
}

//触摸结束
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"ended");
}

//鼠标开始移动
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"moved");
    UITouch *touch = [touches anyObject];
    
    //获取触摸点的坐标
    CGPoint touchPoint = [touch locationInView:self.view];
    
    //    NSLog(@"x:%.1f y:%.1f", touchPoint.x, touchPoint.y);
    //获取灰色视图
    //思路:animationView是self.view的子视图,就可以通过self.view得到他本身的子视图,从而得到animationView
    NSLog(@"subviews count %ld", (unsigned long)[[[self view] subviews]count]);
    //1.获取self.view的所有子视图
    NSArray *allSubViewsArray = [[self view] subviews];
    
    //2.获取灰色的视图
    UIView *grayView = (UIView *)[allSubViewsArray lastObject];
    
    //3.改变灰色视图的坐标
    [grayView setCenter:touchPoint];
}
@end


你可能感兴趣的:(ios 学习之Touch)