今天学习了ios编程里手势的方法及应用场景,屏幕页面中区分很多控件,有的控件可以有点击事件和用户直接交互,可以执行相应方法,如TextField,Button,UISEgmentControll等,但是静态lableUIImageView等就需要把交互开关打开,添加响应的手势才能实现交互。
刘国斌老师详细的对我们讲了七大手势,包括点击Touches,UIPanGestureRecognizer拖动,UILongPressGestureRecognizer长按手势,UIScreenEdgePanGestureRecognizer 侧滑等。
事件是当用户手指触击屏幕及在屏幕上移动时,系统不断发送给应用程序的对象。系统将事件按照特定的路径传递给可以对其进行处理的对象。在iOS中,一个UITouch对象表示一个触摸,一个UIEvent对象表示一个事件。事件对象中包含与当前多点触摸序列相对应的所有触摸对象,还可以提供与特定视图或窗口相关联的触摸对象。
响应者对象是可以响应事件并对其进行处理的对象。
UIResponder是所有响应者对象的基类,它不仅为事件处理,而且也为常见的响应者行为定义编程接口。
// 手势开始移动的时候,让图片的中心点跟着触摸点移动
case UIGestureRecognizerStateChanged:
self.ii.center=[sender locationInView:self.view];
break;
// 当手势移动结束的时候,判断是否在制定区域内,如果在则把图片添加到区域内,注意要转换图片从view到vie的坐标
case UIGestureRecognizerStateEnded:
if (CGRectContainsPoint(self.vie.frame, self.ii.center)) {
CGPoint old=self.ii.center;
CGPoint new=[self.view convertPoint:old toView:self.vie];
[self.vie addSubview:self.ii];
self.ii.center=new;
// 给移动后的图片添加---点击手势
UITapGestureRecognizer *tgr=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(doAction1:)];
[self.ii addGestureRecognizer:tgr];
// 给移动后的图片添加---移动手势
UIPanGestureRecognizer *pgr=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(doAction2:)];
[self.ii addGestureRecognizer:pgr];
// 给移动后的图片添加---旋转手势
UIRotationGestureRecognizer *rg=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(doAction3:)];
[self.ii addGestureRecognizer:rg];
// 给移动后的图片添加---缩放手势
UIPinchGestureRecognizer *pp=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(doAction4:)];
[self.ii addGestureRecognizer:pp];