Бірнеше көріністер үшін бір UIPanGestureRecognizer нысанын қалай қосу керек?

Бір UIPanGestureRecognizer-ды бөліп, бірнеше көріністерге қосуға болады ма? Менің UIImageView экрандық экраны бар, ол пайдаланушы жылжытуға болады. Егер мен бірдей UIPanGestureRecognizer нысанын барлық көріністерге орналастырсам, панель қимылы тек соңғы тіркелген көріністе жұмыс істейді. Мен UIPanGestureRecognizer бағдарламасының бірнеше бөлгішті/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. I also have enabled MultipleTouchEnabled & UserInteractionEnabled. Are there any more elegant solutions?

2

1 жауаптар

Әрбір UIGestureRecognizer тек бір көрініске жатады. Бірдей қасиеттермен бірнеше рет жасаңыз және оларды түрлі көріністерге тағайындаңыз.

Мен тәсілмен қимыл тану құралын жасауды ұсынамын:

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

содан кейін ғана жасайды

for (UIView *view in views) {
    [view addGestureRecognizer:[self myGRMethod]];
}
4
қосылды
Бұл шешім, техникалық тұрғыдан алғанда, әрдайым жұмыс істемейді, мысалы, егер сіз бір-бірімен қиылысатын бірнеше көріністі жылжытсаңыз және стектің жоғарғы жағында емес көрінуге жіберу үшін түртіп жатсаңыз. Оның орнына, бірнеше мақсатты көріністердің шолуына бірдей қимыл танғышты бекітуге болады және қимылды дұрыс көрініске береді.
қосылды автор davidgoli, көзі