1.功能:
手指在屏幕上每一次触摸都会产生一个触摸事件,这些事件会存储在NSSet类型的touches里面,我们可以通过touch方法获取这些触摸事件
注:
(1)touch对象是不需要我们单独创建的,在我们触摸屏幕时就已经产生!所以当我们触摸屏幕,如果写了以下四种方法,就会直接触发事件!
(2)UIImageView 的userInteractionEnabled参数设置为YES,才能触发UIImageView的点击事件
imageView.userInteractionEnabled = YES;
2.四个代理方法:
(1)touchesBegan方法:
//这个方法是在触摸开始时,调用 这个方法
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch * touch = [touches anyObject];//获取touch对象
[UIView animateWithDuration:0.3 animations:^{
imageView.center = [touch locationInView:self.window];
}];
}
(2)touchesEnded方法:
//这个方法是在,手指离开屏幕时,触发这个方法
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
//可以在这里不使用任何一个事件,只去写我们自己的方法
[UIView animateWithDuration:0.3 animations:^{
imageView.center = CGPointMake(160, 300);
}];
}
(3)touchesMoved方法:
//这个方法是说,手指在屏幕上移动时,触发这个方法
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
//那么,手指只要在屏幕有偏移那么就调用一次这个方法
UITouch * touch = [touches anyObject];
//判断touch的view是否是imageView
if (touch.view == imageView && touch.phase == UITouchPhaseMoved) {
imageView.center = [touch locationInView:self.window];}
}
(4)touchesCancelled方法:
//这个方法是触摸被打断时调用的方法,这个方法在模拟器上测试不了
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
//程序运行过程中,进来电话,短信,推送等优先级比较高的事件
}
网友评论