UIGestureRecognizer Delegate метод никога не се извиква

Опитвате се да направите някои изображения с възможност за плъзгане в подизглед на изглед за превъртане. Но нищо не се случва. Някой има ли идеи защо точка на прекъсване в handlePan никога не се достига? :'( Благодаря, ако можете да помогнете!

-(void) viewWillAppear:(BOOL)animated
{
    twView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"twitter"]];
    [self.springView addSubview:twView];
    [twView setFrame:CGRectMake(100, 100, 60, 60)];

    fbView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"facebook"]];
    [self.springView addSubview:fbView];
    [fbView setFrame:CGRectMake(200, 200, 60, 60)];

    g1 = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [twView addGestureRecognizer:g1];
    g1.delegate = self;

    g2 = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [fbView addGestureRecognizer:g2];
    g2.delegate = self;

}

-(void)handlePan:(UIPanGestureRecognizer *)gesture
{
    ... do amazing things
}

person Sparklellama    schedule 20.02.2015    source източник
comment
Не е необходимо да задавате делегат за него. Вече сте задали селектор за цел.   -  person ugur    schedule 21.02.2015


Отговори (3)


Въз основа на това, което имате тук, вероятно е едно от двете неща. Или вашият изглед на изображение няма userInteractionEnabled зададен на да, или има друг изглед върху вашите изгледи на изображения, който блокира жестовете.

person InkGolem    schedule 20.02.2015
comment
Изглежда UIImageView има userInteractionEnabled, зададен на false по подразбиране, когато е създаден програмно. Благодаря! - person Sparklellama; 21.02.2015

Вграденият разпознавател на панорамни жестове на подклас UIScrollView вероятно прихваща жеста.

Уверете се, че вашият контролер за изглед прилага протокола UIGestureRecognizerDelegate и имплементирайте

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES; 
}
person Earl Grey    schedule 20.02.2015
comment
Този отговор също е полезен, изглежда имах повече от един проблем. За съжаление маркирането на две неща като правилни изглежда не работи (не е изненадващо), така че гласуването за ще има 2 :( - person Sparklellama; 21.02.2015

Друго нещо, което ми помага, е екземплярът на набора за разпознаване на жестове

UITapGestureRecognizer *loginTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(loginButtonAction)];
loginTap.delegate = self;
[self.loginButton setUserInteractionEnabled:YES];
[self.loginButton addGestureRecognizer:self.loginTap];

И след присвояване на делегат на себе си, той ще получи извикване в делегатни методи

person Mr.Fingers    schedule 11.11.2016