iPhone UIView Animation Disables UIButton Subview

Таким образом, у меня есть проблема с кнопками и анимациями. В основном я анимирую представление с помощью анимаций UIView, также пытаясь прислушаться к касаниям на кнопке в представлении. Представление является столь же большим как кнопка, и представление является на самом деле подклассом UIImageView с изображением ниже кнопки. Представление является подпредставлением контейнерного представления, помещенного в Интерфейсного Разработчика с включенным взаимодействием с пользователем и включенное отсечение. Вся обработка анимации и кнопки сделана в этом подклассе UIImageView, в то время как startFloating сообщение отправляется от отдельного класса по мере необходимости.

Если я не делаю никакой анимации, buttonTapped: сообщение отправляется правильно, но во время анимации это не становится отправленным. Я также попытался реализовать touchesEnded метод и то же поведение происходят.

UIImageView разделяют init на подклассы (мне заполнили кнопку цветом, таким образом, я вижу, что кадр установлен правильно, который это делает):

- (id)initWithImage:(UIImage *)image {
    self = [super initWithImage:image];
    if (self != nil) {
        // ...stuffs

        UIButton *tapBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        tapBtn.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
        [tapBtn addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
        tapBtn.backgroundColor = [UIColor cyanColor];
        [self addSubview:tapBtn];

        self.userInteractionEnabled = YES;
    }
    return self;
}

Метод анимации, который запускает анимацию (если я не называю это, кнопка работает правильно):

- (void)startFloating {
    [UIView beginAnimations:@"floating" context:nil];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    [UIView setAnimationDuration:10.0f];
    self.frame = CGRectMake(self.frame.origin.x, -self.frame.size.height, self.frame.size.width, self.frame.size.height);
    [UIView commitAnimations];
}

Так, чтобы быть ясным:

  • Используя анимацию UIView эффективно отключает кнопку.
  • Отключение анимации заставляет кнопку работать.
  • Кнопка правильно измерена и расположена на экран и перемещается наряду с представлением правильно.
7
задан bensnider 3 June 2010 в 18:53
поделиться

1 ответ

Анимация - это просто конфета для глаз. Анимация отстает от фактического движения представления. Кнопка уже находится в точке назначения при запуске анимации. Вы просто видите, как движется фильм с видом/кнопкой.

Если вы хотите, чтобы кнопка была кликабельной во время анимации, вам придется сделать анимацию самостоятельно.

7
ответ дан 6 December 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: