我是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;
}
}
答案 0 :(得分:4)
在使用任何手势时,您应该使用以下步骤,
现在你正在使用平移手势,所以我给出了以下步骤来添加平移手势,
将代理添加到头文件[.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 ......
答案 1 :(得分:1)
如果未调用HandlePan
方法,请检查_Imageview是否启用了用户互动:
_Imageview.userInteractionEnabled = YES
答案 2 :(得分:0)
对于快速语言,我们可以这样做:
观看并设置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.bringSubview(toFront: 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%正常工作并经过测试