美文网首页
08-手势识别(点按,长按,轻扫)

08-手势识别(点按,长按,轻扫)

作者: 洧中苇 | 来源:发表于2016-12-11 01:12 被阅读0次

Make by:弓_虽_子

通过touches方法监听view触摸事件的缺点?

1.必须得自定义view,在自定义的View当中去实现touches方法.

2.由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件

3.不容易区分用户的具体手势行为(不容易区分是长按手势,还是缩放手势)这些等.

iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer在触摸事件处理方面大大简化了开发者的开发难度

UIGestureRecognizer手势识别器

利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势

UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势

手势使用方法

1.创建手势

2.添加手势

3.实现手势方法

添加点按手势

UITapGestureRecognizer*tap= [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tap)];

手势也可以设置代理

tap.delegate=self;

添加手势

[self.imageVaddGestureRecognizer:tap];

代理方法:

是否允许接收手指

-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizershouldReceiveTouch:(UITouch*)touch{

让图片的左边不可以点击,

获取当前手指所在的点.是在图片的左边还是在图片的右边.

CGPointcurP = [touchlocationInView:self.imageV];

if(curP.x>self.imageV.bounds.size.width*0.5) {

在图片的右侧

returnYES;

}else{

在图片的左侧

returnNO;

}

returnYES;

}

添加长按手势

UILongPressGestureRecognizer*longP = [[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longP:)];

[self.imageVaddGestureRecognizer:longP];

当长按时调用.

这个方法会调用很多次,当手指长按在上面不松,来回移动时,会持续调用.

所以要判断它的状态.

- (void)longP:(UILongPressGestureRecognizer*)longP{

if(longP.state==UIGestureRecognizerStateBegan){

NSLog(@"开始长按");

}elseif(longP.state==UIGestureRecognizerStateChanged){

NSLog(@"长按时手指移动");

}elseif(longP.state==UIGestureRecognizerStateEnded){

NSLog(@"手指离开屏幕");

}

}

添加轻扫手势

UISwipeGestureRecognizer*swipe = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipe:)];

轻扫手势默认是向右边称轻扫

可以设置轻扫的方法.

一个轻扫手势只能设置一个方法的轻扫.想要让它有多个方向的手势,必须得要设置的

swipe.direction=UISwipeGestureRecognizerDirectionLeft;

[self.imageVaddGestureRecognizer:swipe];

添加轻扫手势

UISwipeGestureRecognizer*swipe2 = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipe:)];

轻扫手势默认是向右边称轻扫

可以设置轻扫的方法.

一个轻扫手势只能设置一个方法的轻扫.想要让它有多个方向的手势,必须得要设置的

swipe2.direction=UISwipeGestureRecognizerDirectionUp;

[self.imageVaddGestureRecognizer:swipe2];

- (void)swipe:(UISwipeGestureRecognizer*)swipe{

判断的轻扫的方向

if(swipe.direction==UISwipeGestureRecognizerDirectionLeft) {

NSLog(@"向左轻扫");

}elseif(swipe.direction==UISwipeGestureRecognizerDirectionUp){

NSLog(@"向上轻扫");

}

}

相关文章

网友评论

      本文标题:08-手势识别(点按,长按,轻扫)

      本文链接:https://www.haomeiwen.com/subject/gqklmttx.html