iOS-手势

UIResponder

UIResponder:是一个响应者(传达者)用来响应用户的触摸屏幕的某些事件

手势

手势分为六大手势,都继承自UIGestureRecognizer

1、点击UITapGestureRecognizer

可以通过手势里面的view属性找到点击的视图

locationaInView:找到点击的位置

numberOfTapsRequired设置点击手势的点击次数

numberOfTouchesRequired设置点击手指的个数

2、长按UILongPressGestureRecognizer

minimumPressDuration设置长按的时间多长时间才会去触发

3、拖拽UIPanGestureRecognizer

minimumNumberOfTouches最少手指

maximumNumberOfTouches最多手指

点击位置是0,0向左减小向上减小可以获得拖动的方向和位置

CGPoint

point = [手势translationInView:视图];

4、捏合UIPinchGestureRecognizer

使一个视图变形transform ->UIView中的属性可以使视图发生形态上的改变

变形之后的视图做其他操作不会还原除非用transform里面的还原的方法

CGAffineTransform让试图改变的类

CGAffineTransformMakeScale(CGFloat

sx, CGFloat sy)让视图按照一个比例去变化放大缩小

CGAffineTransformMakeRotation(CGFloat

angle)让视图按照一个弧度去改变用于旋转

CGAffineTransformIdentity还原之前改变的形状

5、轻扫UISwipeGestureRecognizer

numberOfTouchesRequired最少手指

*direction设置轻扫的方向

这个用法让轻扫的方向是左或者右

swipe.direction

= UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionLeft;

UISwipeGestureRecognizerDirectionRight

UISwipeGestureRecognizerDirectionLeft

UISwipeGestureRecognizerDirectionUp

UISwipeGestureRecognizerDirectionDown

6、旋转UIRotationGestureRecognizer

获得手势的旋转角度让imageView随这个角度去变化

imageView.transform

= CGAffineTransformMakeRotation(sender.rotation);

手势的属性方法

初始化

-(instancetype)initWithTarget:(nullableid)targetaction:(nullableSEL)action

*状态属性:state

UIGestureRecognizerStatePossible,默认

UIGestureRecognizerStateBegan,开始

UIGestureRecognizerStateChanged,改变

UIGestureRecognizerStateEnded,结束

UIGestureRecognizerStateCancelled,取消

UIGestureRecognizerStateFailed,失败

*UIView里面有添加手势的方法要用UIView的对象去调用

addGestureRecognizer:

手势的触发方法

*手指开始触摸屏幕的时候调用

- (void)touchesBegan:(NSSet *)touches withEvent:(nullableUIEvent*)event;

注:

anyObject 获得touches这个集合里面的某一个touch事件

UITouch *touch = [touches anyObject];

找到触摸视图上面的触摸点

CGPointpoint = [touch locationInView:self.view];

*手指触摸屏幕开始移动的时候

- (void)touchesMoved:(NSSet*)touches withEvent:(nullableUIEvent*)event;

*手指离开屏幕的时候

- (void)touchesEnded:(NSSet*)touches withEvent:(nullableUIEvent*)event;

*手指因外部事件取消触摸(一些外部事件让取消比如来电话)

- (void)touchesCancelled:(nullableNSSet *)touches withEvent:(nullableUIEvent *)event;

注:若手势不调用,检查是否设置了背景颜色。我就犯过这种错误。

你可能感兴趣的:(iOS-手势)