Birkaç görünüm için bir UIPanGestureRecognizer nesnesi nasıl eklenir?

Yalnızca bir UIPanGestureRecognizer'ı ayırmak ve birden çok görünüme eklemek mümkün mü? Kullanıcının taşıyabileceği çoklu ekran UIImageView nesneleri var (pan). Aynı UIPanGestureRecognizer nesnesini tüm görünümlere ayırıp takıyorsam, pan hareketi yalnızca son eklenen görünümde çalışır. UIPanGestureRecognizer birden fazla tahsis/init yaparak bir geçici çözüm yaptım, her görünüm için farklı bir UIPanGestureRecognizer nesne demek. İşte kod:

- (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. I also have enabled MultipleTouchEnabled & UserInteractionEnabled. Are there any more elegant solutions?

2

1 cevap

Hayır - her UIGestureRecognizer yalnızca bir görünüme ait olabilir. Sadece aynı özelliklere sahip birden çok tane oluşturun ve bunları farklı görünümlere atayın.

Bir yöntemde jest tanıyıcıyı oluşturmanızı öneririm:

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

ve sonra sadece yapıyor

for (UIView *view in views) {
    [view addGestureRecognizer:[self myGRMethod]];
}
4
katma
Bu çözüm, teknik olarak doğru olsa da, her zaman işe yaramaz - örneğin, birden fazla çakışan görüntüyü taşıyorsanız ve yığının üst kısmında olmayan bir görünüme gönderilmek için bir dokunuşa ihtiyacınız varsa. Bunun yerine, birkaç hedef görüntünün süper görüntüsüne tek bir jest tanıyıcı eklemek ve hareketi doğru görünüme vermek mümkündür.
katma yazar davidgoli, kaynak