UIGestureRecognizer学习之——UISwipeGestureRecognizer

来源:互联网 发布:淘宝开店身份证要求 编辑:程序博客网 时间:2024/06/05 01:09

UISwipeGestureRecognizer是UIGestureRecognizer的子类。
UISwipeGestureRecognizer除了继承UIGestureRecognizer的属性外,还提供如下俩个属性:

direction: //设置该手势处理器处理该方向的轻扫。该属性支持UISwipeGestureRecognizerDirectionRight(1<<0)、UISwipeGestureRecognizerDirectionLeft(1<<1)、UISwipeGestureRecognizerDirectionUp(1<<2)、UISwipeGestureRecognizerDirectionDown(1<<3)4个枚举值numberOfTouchesRequired: //指定该手势处理器只处理几个手指的触碰事件

示例:使用UISwipeGestureRecognizer处理轻扫手势。

interface FKViewController : UIViewController@property (strong, nonatomic) IBOutlet UIView *gv;@property (strong, nonatomic) IBOutlet UILabel *label;@end
@implementation FKViewController- (void)viewDidLoad{    [super viewDidLoad];    self.view.backgroundColor = [UIColor lightGrayColor];    self.gv.layer.borderWidth = 2;    self.gv.layer.cornerRadius = 6;    // 设置gv控件支持用户交互    self.gv.userInteractionEnabled = YES;    // 设置gv控件支持多点触碰    self.gv.multipleTouchEnabled = YES;    for (int i = 0 ; i < 4 ; i++)    {        // 创建手势处理器,指定使用该控制器的handleSwipe:方法处理轻扫手势        UISwipeGestureRecognizer* gesture = [[UISwipeGestureRecognizer alloc]            initWithTarget:self action:@selector(handleSwipe:)];        // 设置该点击手势处理器只处理i个手指的轻扫手势        gesture.numberOfTouchesRequired = 1;        // 指定该手势处理器只处理1 << i方向的轻扫手势        gesture.direction = 1 << i;        // 为gv控件添加手势处理器。        [self.gv addGestureRecognizer:gesture];    }}// 实现手势处理器的方法,该方法应该声明一个形参。// 当该方法被激发时,手势处理器会作为参数传给该方法的参数。- (void) handleSwipe:(UISwipeGestureRecognizer*)gesture{    // 获取轻扫手势的方向    NSUInteger direction = gesture.direction;    // 根据手势方向的值得到方向字符串    NSString* dirStr = direction == UISwipeGestureRecognizerDirectionRight        ? @"向右" : (direction == UISwipeGestureRecognizerDirectionLeft        ? @"向左" : (direction == UISwipeGestureRecognizerDirectionUp        ? @"向上" :@"向下"));    NSUInteger touchNum = gesture.numberOfTouchesRequired;    self.label.text = [NSString stringWithFormat:        @"用户使用%d个手指进行轻扫,方向为:%@" , touchNum , dirStr];    // 指定2秒后清除label的文本    [self.label performSelector:@selector(setText:)        withObject:@"" afterDelay:2];}@end

上面程序使用循环创建了4个轻扫手势处理器,这4个手势处理器分别处理向上、向下、向左、向右4个方向的手势,而且指定了该手势处理器只处理一个手指的“轻扫”手势。当用户用一个手指执行“轻扫”手势时,程序将会激发handleSwipe:方法,该方法仅仅是将用户的手势信息显示在UILabel上。

1 0
原创粉丝点击