当给整个控制器添加了拖拽手势(UIPanGestureRecognizer),然后在控制器里面的UITableViewCell又添加了左滑清扫手势(UISwipeGestureRecognizer),造成了只有拖拽手势起了作用
imageView]; //用户交互设置 self.imageView.userInteractionEnabled = YES; //添加扫动得手势 UISwipeGestureRecognizer *swipL = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swip:)]; swipL.direction UISwipeGestureRecognizerDirectionLeft; [self.imageView addGestureRecognizer:swipL]; UISwipeGestureRecognizer *swipR = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swip:)]; swipR.direction [self.imageView addGestureRecognizer:swipR]; } 设置转场动画 :在手势里边进行实现 手势的实现以及转场动画: -(void)swip:(UISwipeGestureRecognizer
这里尝试用了下使用三个方式来实现了这个功能: 1、使用自定义UITableViewCell + UISwipeGestureRecognizer + 代理 实现; 2、使用自定义UITableViewCell + UIPanGestureRecognizer + 代理 实现; 3、使用自定义UITableViewCell + UISwipeGestureRecognizer + block 实现。 感觉还是用UISwipeGestureRecognizer清扫手势实现好点! 部分代码: 1、使用UISwipeGestureRecognizer + Delegate 自定义UITableViewCell部分代码: 1 // 2 // TanTableViewCell.h *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)]; leftSwipe.direction
action:@selector(doDoubleTap:)]; [_imageView addGestureRecognizer:doubleTap]; //添加手势 UISwipeGestureRecognizer *leftSwipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(leftSwipe:)] *rightSwipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(rightSwipe: self addGestureRecognizer:rightSwipeGesture]; } 然后实现各手势的方法 #pragma mark 向左滑动浏览下一张图片 -(void)leftSwipe:(UISwipeGestureRecognizer *)gesture{ [self transitionAnimation:YES]; } #pragma mark 向右滑动浏览上一张图片 -(void)rightSwipe:(UISwipeGestureRecognizer
所有控件都可以添加手势 [控件 addGestureRecognizer: ] 3.iOS 系统提供的手势有哪些 UITapGestureRecognizer 点击 UISwipeGestureRecognizer NSLog(@"双击"); } else { NSLog(@"三击"); } } 轻扫手势 向左轻扫 UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)]; UISwipeGestureRecognizerDirectionLeft; //左 [_imageView addGestureRecognizer:leftSwipe]; 向右轻扫 UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];
添加轻扫手势,一个向左一个向右,代码如下: 1 //添加轻扫手势 2 UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer UISwipeGestureRecognizerDirectionRight; //默认向右 5 [self.view addGestureRecognizer:swipeGesture]; 6 7 //添加轻扫手势 8 UISwipeGestureRecognizer *swipeGestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture addGestureRecognizer:swipeGestureLeft]; 回调方法如下: 1 //轻扫手势触发方法 2 -(void)swipeGesture:(id)sender 3 { 4 UISwipeGestureRecognizer
; [self.view bringSubviewToFront:_centerController.view]; //add swipe gesture UISwipeGestureRecognizer *swipeGestureRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture UISwipeGestureRecognizerDirectionRight]; [_centerController.view addGestureRecognizer:swipeGestureRight]; UISwipeGestureRecognizer *swipeGestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture UISwipeGestureRecognizerDirectionLeft]; [_centerController.view addGestureRecognizer:swipeGestureLeft]; } -(void) swipeGesture:(UISwipeGestureRecognizer
return; } _swipeGestures = [NSMutableArray arrayWithCapacity:4]; // 下面的代码写的比较“奇怪”,原因在于UISwipeGestureRecognizer 的direction属性,是一个可选的位掩码,但是每个手势识别器又只能处理一个方向的手势,所以就导致了下面需要生成四个UISwipeGestureRecognizer的手势识别器。 SEL selector = @selector(onSwipe:); // 新建一个upSwipeRecognizer UISwipeGestureRecognizer *upSwipeRecognizer 因为每个手势识别器又只能处理一个方向的手势,所以就导致了需要生成四个UISwipeGestureRecognizer的手势识别器。 给当前的视图增加一个轻扫手势,触发的方法是onSwipe:方法。 - (void)onSwipe:(UISwipeGestureRecognizer *)gesture { UISwipeGestureRecognizerDirection direction
使用它的子类才能处理具体的手势 子类: UITapGestureRecognizer(敲击) UIPinchGestureRecognizer(捏合,用于缩放) UIPanGestureRecognizer(拖拽) UISwipeGestureRecognizer 基于之前的transform进行形变 rotation.rotation=0;//进行复位 } - (void) addSwipe{ UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe:)]; /** UISwipeGestureRecognizerDirectionLeft]; [self.ImageView addGestureRecognizer:swipe]; } - (void)swipe:(UISwipeGestureRecognizer
Lifecycle // 2 – (void)viewDidLoad { [super viewDidLoad]; [self setupBook:[RWTBook testBook]]; UISwipeGestureRecognizer *swipeNext = [[UISwipeGestureRecognizer alloc] initWithTarget swipeNext.direction = UISwipeGestureRecognizerDirectionLeft; [self.view addGestureRecognizer:swipeNext]; UISwipeGestureRecognizer *swipePrevious = [[UISwipeGestureRecognizer alloc] initWithTarget
UISwipeGestureRecognizer:轻扫手势识别。 UIPanGestureRecognizer:拖动手势识别。 rotate = UIRotationGestureRecognizer(target: self, action: #selector(gesture)) let swipe = UISwipeGestureRecognizer (target: self, action: #selector(gesture)) // UISwipeGestureRecognizer需要设置direction swipe.direction
使用它的子类才能处理具体的手势 UITapGestureRecognizer(点按) UIPinchGestureRecognizer(捏合,用于缩放) UIPanGestureRecognizer(拖动) UISwipeGestureRecognizer addSwipeGesture { // 如果要监听多个轻扫方向,需要添加多个轻扫手势 // 轻扫手势默认支持向右的扫动方向 //创建轻扫手势识别并添加监听事件(默认是向右扫动) UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)]; / /创建轻扫手势识别并添加监听事件 UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget addGestureRecognizer:swipe]; [self.view addGestureRecognizer:swipeLeft]; } //识别到轻扫手势后回调的方法 - (void)swipe:(UISwipeGestureRecognizer
是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 UITapGestureRecognizer(轻触,点按) UILongPressGestureRecognizer(长按) UISwipeGestureRecognizer longPress.allowableMovement = 10; // 把长按手势添加到对应的控件中 [self.imgView addGestureRecognizer:longPress]; ---- 七、UISwipeGestureRecognizer UISwipeGestureRecognizerDirectionLeft 向左滑 UISwipeGestureRecognizerDirectionUp 向上滑 UISwipeGestureRecognizerDirectionDown 向下滑 例子: UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];
startProgress:动画起点(在整体动画的百分比) endProgress:动画终点(在整体动画的百分比) 例子: - (IBAction)didRecognizeSwipeGesture:(UISwipeGestureRecognizer 将改变视图属性的代码放在这个block中 completion:动画结束后,会自动调用这个block 例子: // 识别到了轻扫手势 - (IBAction)didRecognizeSwipeGesture:(UISwipeGestureRecognizer
UITapGestureRecognizer UIPinchGestureRecognizer UIRotationGestureRecognizer UISwipeGestureRecognizer UITabGestureRecognizer 轻击手势 UIPinchGestureRecognizer 捏合手势 UIRotationGestureRecognizer 旋转手势 UISwipeGestureRecognizer
addLongPress];}// 2.自己定义方法,加入swipe手势- (void)addSwipe{ // 1.创建Swipe手势识别器对象,同一时候绑定监听方法(识别到了相应的手势,就会调用监听方法) UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swiping)]; // 设置属性
使用它的子类才能处理具体的手势 UITapGestureRecognizer(敲击) UIPinchGestureRecognizer(捏合,用于缩放) UIPanGestureRecognizer(拖拽) UISwipeGestureRecognizer
inView:(nullable UIView *)view; //设置拖拽速度 - (CGPoint)velocityInView:(nullable UIView *)view; 七、滑动手势——UISwipeGestureRecognizer
completeBtn.setTitle("完毕", forState: UIControlState.Normal) } let swipeGesture = UISwipeGestureRecognizer
边缘拖动) UIPinchGestureRecognizer(捏合) UIRotationGestureRecognizer(旋转) UILongPressGestureRecognizer(长按) UISwipeGestureRecognizer