iOS手势识别的详细使用方法(拖动,缩放,旋转,点击,手势依赖,自定

2020-01-18 17:11:45于丽

                      /     /                             
                    /     /             _----_              
                   /     /           _-~      ~-_         |   |
                  (      (        _-~    _--_    ~-_     _/   |
                         ~-____-~    _-~    ~-_    ~-_-~    /
                     ~-_           _-~          ~-_       _-~ 
                        ~--______-~                ~-___-~

的图片,在模拟器上拖动是没问题的。缩放和旋转有点问题,估计是因为在模拟器上的模拟的两个接触点距离在imageView的边界外了,所以操作无效果。

建议在真机上运行这个手势。

在模拟器上缩放和选择的操作技巧:

可以把imageView的frame值设置大一点,按住alt键,按下触摸板(不按下不行),这样就可以旋转和缩放了。

6、添加第二个ImagView并添加手势

记住:一个手势只能添加到一个View,两个View当然要有两个手势的实例了


- (void)viewDidLoad 
{ 
  [super viewDidLoad]; 
 
  UIImageView *snakeImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"snake.png"]]; 
  UIImageView *dragonImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"dragon.png"]]; 
  snakeImageView.frame = CGRectMake(120, 120, 100, 160); 
  dragonImageView.frame = CGRectMake(50, 50, 100, 160); 
  [self.view addSubview:snakeImageView]; 
  [self.view addSubview:dragonImageView]; 
   
  for (UIView *view in self.view.subviews) { 
    UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] 
                            initWithTarget:self 
                            action:@selector(handlePan:)]; 
     
    UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] 
                              initWithTarget:self 
                              action:@selector(handlePinch:)]; 
     
    UIRotationGestureRecognizer *rotateRecognizer = [[UIRotationGestureRecognizer alloc] 
                             initWithTarget:self 
                             action:@selector(handleRotate:)]; 
     
    [view addGestureRecognizer:panGestureRecognizer]; 
    [view addGestureRecognizer:pinchGestureRecognizer]; 
    [view addGestureRecognizer:rotateRecognizer]; 
    [view setUserInteractionEnabled:YES]; 
  } 
  [self.view setBackgroundColor:[UIColor whiteColor]];    
}