Жест касания UIImageView не работает при втором нажатии

#ios #uiimageview #uigesturerecognizer

#iOS #uiimageview #uigesturerecognizer

Вопрос:

Я внедрил UITapGestureRecognizer в UIImageView, он работает при первом нажатии. При первом нажатии я скрываю это изображение и запускаю анимацию. Как только анимация завершена, я снова показываю изображение. Но во второй раз я не получаю событие касания этого UIImageView.

Ниже приведен код, который я использую :

 - (void)viewDidLoad{

[super viewDidLoad];

defaultDogView= [[UIImageView alloc] initWithFrame:CGRectMake(3, 270, 110, 210)];
[defaultDogView setImage:[UIImage imageNamed:@"dog1.png"]];
defaultDogView.userInteractionEnabled = YES;
[self addGestureRecognizersToPiece:defaultDogView];
[self.view addSubview:defaultDogView];

}

- (void)addGestureRecognizersToPiece:(UIImageView *)piece  
{
NSLog(@"in Gesture");
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapPiece:)];
[tapGesture setDelegate:self];    

[piece addGestureRecognizer:tapGesture];
[tapGesture release];

    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc]  initWithTarget:self action:@selector(longPressPiece:)];
    [piece addGestureRecognizer:longPressGesture];
    [longPressGesture release];

    NSLog(@"%@", [piece gestureRecognizers]);

}
- (void)singleTapPiece:(UITapGestureRecognizer *)gestureRecognizer
{
NSLog(@"Image Tapped");

/** Hide the default Image and start the animation ***/

[defaultDogView setHidden:TRUE];

/***Animating the Dog***/
[dogArray addObject:[SpriteHelpers setupAnimatedDog:self.view numFrames:69        withFilePrefix:@"dog" withDuration:(12) ofType:@"png" withValue:0]];
dogView = [dogArray objectAtIndex:0];

[self performSelector:@selector(callBubbleUpdater) withObject:nil afterDelay:5.5];
}
-(void)showDogFrame{
    NSLog(@"%@",[defaultDogView gestureRecognizers]);
    [defaultDogView setHidden:FALSE];
    defaultDogView.userInteractionEnabled = YES;
}
  

Ответ №1:

Обнаружена ошибка. Это было потому, что мой вид анимации перекрывался с UIImageView. Единственное, что мне нужно было сделать после завершения анимации, это сделать мой UIImageView zindex 0. Я использовал следующий код для решения проблемы :

 //animation stuff

//after animation complition
[self.view bringSubviewToFront:bubbleAlphabetView];