Я создал небольшой пользовательский UIView с UILabel и UIButton, это настраиваемое представление представляет собой баннер для отображения в верхней части текущего контроллера представления.Анимация пользовательского UIView с экрана делает его subviews не отвечающим
Я загружаю макет представления из файла nib и использую метод из пользовательского представления, чтобы отобразить его с помощью анимации, и представление будет скрываться через определенное количество времени. Как это.
- (void)displayBannerInViewController:(UIViewController *)vc
{
CGFloat originY = 0;
if (vc.navigationController != nil) {
originY += 20 + vc.navigationController.navigationBar.bounds.size.height - self.bounds.size.height;
}
self.frame = CGRectMake(0,
originY,
[UIScreen mainScreen].bounds.size.width,
self.bounds.size.height);
if (vc.navigationController != nil) {
[vc.navigationController.view insertSubview:self atIndex:1];
} else {
[vc.view.window insertSubview:self atIndex:1];
}
[UIView animateWithDuration:0.3 animations:^{
self.frame = CGRectOffset(self.frame, 0, self.bounds.size.height);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3 delay:self.duration options:0 animations:^{
self.frame = CGRectOffset(self.frame, 0, -self.bounds.size.height);
} completion:^(BOOL finished) {
if (finished) {
[self removeFromSuperview];
}
}];
}];
}
Я установил действие для кнопки внутри баннера с этим
[self.actionButton addTarget:self
action:@selector(executeActionBlock)
forControlEvents:UIControlEventTouchUpInside];
После анимации, показывающей знамя, и перед не скрыта, независимо от того, сколько раз я нажимаю на кнопку, то executeActionBlock
метод никогда не вызывается.
Я установил тестовую установку начального кадра баннера в начало (0, 0) и без анимации, а затем кнопка работала нормально. Итак, я не знаю, связана ли проблема с анимацией или из-за того, что исходный фрейм баннера находится в не видимой позиции. BTW, важно, чтобы баннер не был виден, потому что приложение отображается из-под панели навигации.
Благодаря
Вы удаляете вид из супервизора в конце нет? – SeanLintern88