代码之家  ›  专栏  ›  技术社区  ›  user3403733

如何使用平移手势

  •  1
  • user3403733  · 技术社区  · 10 年前

    我是一名Xcode 5的初学者程序员,正在尝试编写代码,允许用户通过用户触摸输入来移动图像。

    到目前为止,我相信我的代码是正确的,但我相信我遗漏了一些东西,因为UIImage拒绝移动。虽然当尝试用NSLog测试它时,我没有得到显示它工作的响应。我想我必须为图像创建一个自定义类,如果是,我会这样做,我会如何链接它。

    例如

      @implementation StartPage
      - (IBAction)HandlePan:(UIGestureRecognizer *)sender; {
      NSLog(@"panning"); //Testing to check if the image moves when touched by user.
    
      CGPoint NetTranslation ;
      CGPoint Translation =
     [(UIPanGestureRecognizer *) sender translationInView: _Imageview ];
    
      sender.view.transform=CGAffineTransformMakeTranslation (
    
      NetTranslation.x += Translation.x,
      NetTranslation.y += Translation.y);
      enter code here
      if(sender.state == UIGestureRecognizerStateEnded)
      {
       NetTranslation.x += Translation.x;
       NetTranslation.y += Translation.y;
      }
    

    }

    3 回复  |  直到 10 年前
        1
  •  4
  •   Learning Programming    10 年前

    在使用任何手势时,应使用以下步骤:,

    现在您正在使用平移手势,所以我将给出以下步骤来添加平移手势,

    1. 将委托类添加到头文件[.h文件]

      @interface ViewName : UIView <UIGestureRecognizerDelegate>
      
    2. 宣布该手势

      @property (nonatomic,strong) UIPanGestureRecognizer *pan;
      
    3. 分配该手势

      pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
      
    4. 说明这些委托方法的位置

      pan.delegate = self;
      
    5. 将该手势添加到视图中,如

      [self.view addGestureRecognizer:pan];
      
    6. 将handlePan方法定义为

      - (void)handlePan:(UIPanGestureRecognizer *)recognizer
      { 
         // code for pan gesture here
      }
      

    我想你错过了做点什么。。。希望这将解决您的问题,检查您是否在头文件中添加了UIGestureRecognizer。。。

        2
  •  1
  •   Avt    10 年前

    如果您的 HandlePan 方法未调用。请检查_Imageview是否启用了用户交互:

    _Imageview.userInteractionEnabled = YES
    
        3
  •  0
  •   Muhammad Ahmad Mr.Javed Multani    2 年前

    对于快速语言,我们可以这样做:

    查看并设置IBOutlet:

    @IBOutlet weak var viewDrag: UIView!
    
    var panGesture = UIPanGestureRecognizer()
    

    在viewDidLoad()上编写这段漂亮的代码

     panGesture = UIPanGestureRecognizer(target: self, action: #selector(self.draggedView(_:)))
        viewDrag.isUserInteractionEnabled = true
        viewDrag.addGestureRecognizer(panGesture)
    

    这是在识别手势时调用的方法

     @objc func draggedView(_ sender:UIPanGestureRecognizer){
        self.view.bringSubviewToFront(viewDrag)
        let translation = sender.translation(in: self.view)
        viewDrag.center = CGPoint(x: viewDrag.center.x + translation.x, y: viewDrag.center.y + translation.y)
        sender.setTranslation(CGPoint.zero, in: self.view)
    }
    

    100%工作和测试