向多个动态创建的视图添加平移手势?

时间:2014-11-24 14:37:51

标签: ios objective-c

我想知道最好的办法是什么。我正在按一下按钮创建一个新的imageview。此视图需要附加平移手势识别器。

我一直无法让它发挥作用。它必须是动态的,因为用户需要能够创建多个视图。

到目前为止我的代码:

按钮点击方法:

UIImageView *myView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"testImg.png"]];
myView.frame = CGRectMake(50, 50, 50, 50);
myView.userInteractionEnabled = YES;

[self.view addSubView:myView];

UIGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:myView action:@selector(moveView:)];
[myView addGestureRecognizer:panGesture];

moveView方法只是改变了新视图的中心位置。

视图创建正常但是当我尝试移动视图时,我收到一个“无法识别的选择器发送到实例”错误。

这样做的正确方法是什么?

提前致谢

2 个答案:

答案 0 :(得分:1)

您正在发送选择器(方法)" moveView:"你的myView没有实现什么。 (不响应此选择器)。你需要改变才能发送到你的viewController,这里是:

  UIGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveView:)];

有一件事是添加手势的视图,另一件是触发方法的对象。

答案 1 :(得分:1)

我假设moveView:方法是在你的控制器中实现的,因为myView的类型是UIImageView。 致电

UIGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:myView action:@selector(moveView:)];

你告诉新创建的手势识别器在myView中触发moveView:方法。

UIGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveView:)];

在self(您的控制器?)而不是myView

中调用moveView:方法