如何为多个视图附加一个UIPanGestureRecognizer对象?

时间:2011-10-28 12:44:41

标签: iphone objective-c uigesturerecognizer

是否可以只分配一个UIPanGestureRecognizer并附加到多个视图?我有多个用户可以移动的屏幕UIImageView对象(平移)。如果我正在进行alloc并将相同的UIPanGestureRecognizer对象附加到所有视图,那么平移手势仅适用于最后附加的视图。我通过制作UIPanGestureRecognizer的多个alloc / init来做一个解决方法,我的意思是每个视图有一个不同的UIPanGestureRecognizer对象。这是代码:

- (void)viewDidLoad
{
  [super viewDidLoad];

  UIPanGestureRecognizer * pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(updateImagePosition:)];
  [self.panningBtn1 addGestureRecognizer:pgr];
  [pgr release];

  pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(updateImagePosition:)];
  [self.panningBtn2 addGestureRecognizer:pgr];
  [pgr release];

  ...

PS。我也启用了MultipleTouchEnabled& UserInteractionEnabled。还有更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:4)

否 - 每个UIGestureRecognizer只能属于一个视图。只需使用相同的属性创建多个并将它们分配给不同的视图。

我建议在方法中创建手势识别器:

-(UIGestureRecognizer *)myGRMethod {
  UIPanGestureRecognizer *pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(updateImagePosition:)];
  return [pgr autorelease];
}

然后只是做

for (UIView *view in views) {
    [view addGestureRecognizer:[self myGRMethod]];
}