【问题标题】:How to use Pan Gestures如何使用平移手势
【发布时间】:2014-03-10 22:22:43
【问题描述】:

我是 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;
  }

}

【问题讨论】:

  • “虽然当尝试使用 NSLog 测试它时,我没有得到显示它工作的响应。”所以您的问题是手势识别器不适用于您的视图。请在初始化手势识别器的位置添加代码。

标签: ios objective-c gesture uipangesturerecognizer pan


【解决方案1】:

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

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

  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 ......

【讨论】:

  • 谢谢你的回答,我有点特别,没有检查我的页面之间的链接。现在一切正常。
  • Gr8,嘿,伙计,如果你觉得这个答案很有用,那么你可以投票...祝你好运...
【解决方案2】:

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

_Imageview.userInteractionEnabled = YES

【讨论】:

  • 谢谢你的回答,我有点特别,没有检查我的页面之间的链接。现在一切正常。
【解决方案3】:

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

查看并设置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% 工作和测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多