如何使用平移手势
Posted
技术标签:
【中文标题】如何使用平移手势【英文标题】: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 测试它时,我没有得到显示它工作的响应。”所以您的问题是手势识别器不适用于您的视图。请在初始化手势识别器的位置添加代码。 【参考方案1】:在使用任何手势时,您应该使用以下步骤,
现在您正在使用平移手势,所以我提供以下步骤来添加平移手势,
在您的头文件 [.h 文件] 中添加类似的委托
@interface ViewName : UIView <UIGestureRecognizerDelegate>
声明那个手势
@property (nonatomic,strong) UIPanGestureRecognizer *pan;
分配那个手势
pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
提及这些委托方法所在的位置
pan.delegate = self;
将该手势添加到视图中
[self.view addGestureRecognizer:pan];
将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% 工作和测试
【讨论】:
以上是关于如何使用平移手势的主要内容,如果未能解决你的问题,请参考以下文章