欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

IOS开发(68)之捕获点击划屏手势

程序员文章站 2023-10-27 13:38:28
1 前言 手势其实是一组触摸事件的组合, 手势事件识别必须要添加到一个 uiview 这个类里面去,一个单独存在的视图可以添加多个手势识别器。一旦这个界面捕获到了一些手势动作,这...

1 前言
手势其实是一组触摸事件的组合, 手势事件识别必须要添加到一个 uiview 这个类里面去,一个单独存在的视图可以添加多个手势识别器。一旦这个界面捕获到了一些手势动作,这个视图将会把这个手势动作传递给其他的手势识别器。
一些触摸事件需要手机的支持,如下是 ios sdk5 提供的 6 个手势识别器.
• swipe //划动
• rotation //转动
• pinch //收缩
• pan //摇动
• long press //长按
• tap //轻击
最基础的框架为了能够处理手势的动作必须要按照如下步骤来进行操作:
 创建一个合适的手势识别器的对象。
 把这个手势识别器的对象绑定到一个视图上。
 添加一些捕获手势事件发生的方法。
• 这个方法必须返回类型为空
• 这个方法要么是无参数类型的,要么只能接受一个 uigesturerecognizer 类型的参数。
手势识别器一般可以分为两个大类,一个是单独的一个手势,一个是连贯的手势组合。单独的顾名思义, 就是一个手势之后就会有一个监听捕获的事件,然后来做相应的操作。连贯的就是一组手势动作,然后在进行 监听捕获事件进行相关的处理。的操作。连贯的就是一组手势动作,然后在进行 监听捕获事件进行相关的处理。
参考代码
- (void) taprecognizer:(uitapgesturerecognizer *)paramsender{
/* */
}
- (void) taprecognizer{
/* */
}
这节我们来学习uiswipegesturerecognizer
2 代码实例
zyviewcontroller.m


[plain]
- (void)viewdidload 

    [super viewdidload]; 
    // do any additional setup after loading the view, typically from a nib. 
    /* 实例化手势对象 */ 
    self.swipegesturerecognizer = [[uiswipegesturerecognizer alloc] 
                                   initwithtarget:self action:@selector(handleswipes:)]; 
    /*从右向左滑动*/ 
    self.swipegesturerecognizer.direction = uiswipegesturerecognizerdirectionleft; 
    /* 单个手指 */ 
    self.swipegesturerecognizer.numberoftouchesrequired = 1; 
    /* 添加到view中 */ 
    [self.view addgesturerecognizer:self.swipegesturerecognizer]; 

 
- (void) handleswipes:(uiswipegesturerecognizer *)paramsender{ 
    //按下 
    if (paramsender.direction & uiswipegesturerecognizerdirectiondown){ 
        nslog(@"swiped down."); 
    } 
    //向左 
    if (paramsender.direction & uiswipegesturerecognizerdirectionleft){ 
        nslog(@"swiped left."); 
    } 
    //向右 
    if (paramsender.direction & uiswipegesturerecognizerdirectionright){ 
        nslog(@"swiped right."); 
    } 
    //抬起 
    if (paramsender.direction & uiswipegesturerecognizerdirectionup){ 
        nslog(@"swiped up."); 
    } 

- (void)viewdidload
{
    [super viewdidload];
 // do any additional setup after loading the view, typically from a nib.
    /* 实例化手势对象 */
    self.swipegesturerecognizer = [[uiswipegesturerecognizer alloc]
                                   initwithtarget:self action:@selector(handleswipes:)];
    /*从右向左滑动*/
    self.swipegesturerecognizer.direction = uiswipegesturerecognizerdirectionleft;
    /* 单个手指 */
    self.swipegesturerecognizer.numberoftouchesrequired = 1;
    /* 添加到view中 */
    [self.view addgesturerecognizer:self.swipegesturerecognizer];
}

- (void) handleswipes:(uiswipegesturerecognizer *)paramsender{
    //按下
    if (paramsender.direction & uiswipegesturerecognizerdirectiondown){
        nslog(@"swiped down.");
    }
    //向左
    if (paramsender.direction & uiswipegesturerecognizerdirectionleft){
        nslog(@"swiped left.");
    }
    //向右
    if (paramsender.direction & uiswipegesturerecognizerdirectionright){
        nslog(@"swiped right.");
    }
    //抬起
    if (paramsender.direction & uiswipegesturerecognizerdirectionup){
        nslog(@"swiped up.");
    }
}
运行结果

鼠标在模拟器屏幕上从右向左移动后,控制台显示的结果


2013-05-12 22:22:43.005 uiswipegesturetest[734:c07] swiped left.