Ko'p marta ko'rish uchun bitta UIPanGestureRecognizer obyektini qanday qo'shish kerak?

Faqat bitta UIPanGestureRecognizerni ajratish va bir nechta ko'rinishga biriktirish mumkinmi? Menga bir nechta ekrandagi UIImageView moslamalari mavjud (foydalanuvchi). Agar ajratish va bir xil UIPanGestureRecognizer ob'ektini barcha ko'rinishga qo'shsam, panning harakati faqat oxirgi biriktirilgan ko'rinishda ishlaydi. UIPanGestureRecognizer ning bir nechta ajratilishini/init ni yaratib, vaqtinchalik hal qildim, ya'ni har bir ko'rinish uchun boshqa UIPanGestureRecognizer obyektini nazarda tutyapman. Kodi:

- (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 javoblar

Yo'q, har UIGestureRecognizer faqat bitta ko'rinishga tegishli bo'lishi mumkin. Faqat bir xil xususiyatlarga ega bir nechta yaratgin va ularni turli xil ko'rinishga tayinlang.

Bir usulda imo-ishorani aniqlashni yaratishni taklif qilaman:

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

va keyin faqat

for (UIView *view in views) {
    [view addGestureRecognizer:[self myGRMethod]];
}
4
qo'shib qo'ydi
Ushbu yechim, texnik jihatdan to'g'ri bo'lsa ham, doimo ishlamaydi - masalan, bir nechta o'zaro qarama-qarshi fikrlarni ko'chirib o'tkazsangiz va stackning tepasida bo'lmagan ko'rinishga jo'natish uchun teginish kerak bo'lsa. Buning o'rniga, bir nechta maqsadli qarashlarning umumiy ko'rinishiga bitta jestni tanib oluvchi qo'sha olishi va imo-ishorani to'g'ri ko'rinishga berishi mumkin.
qo'shib qo'ydi muallif davidgoli, manba