У меня проблема с кнопками и анимацией. В принципе, я анимирую представление, используя анимацию UIView, а также пытаюсь прослушивать нажатия на кнопку внутри представления. Вид такой же большой, как и кнопка, и представление на самом деле является подклассом UIImageView с изображением под кнопкой. Представление представляет собой представление в представлении контейнера, размещенном в Interface Builder, с включенным взаимодействием с пользователем и отключением отсечения. Вся обработка анимации и кнопок выполняется в этом подклассе UIImageView, а сообщение startFloating
отправляется из отдельного класса по мере необходимости.iPhone UIView Animation отключает UIButton Subview
Если я не делаю анимации, сообщение buttonTapped:
отправляется правильно, но во время анимации он не отправляется. Я также пробовал реализовать метод touchesEnded
, и такое же поведение происходит.
UIImageView подкласс инициализация (я кнопка заполнен цветом, так что я могу видеть кадр получает установлены правильно, что он делает):
- (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 анимации эффективно отключает кнопку.
- Отключение анимации заставляет кнопку работать.
- Кнопка имеет правильный размер и расположение на экране и правильно перемещается вместе с изображением.
Хм после делать некоторые тесты, я считаю, что вы правильно. Это кажется довольно жутким, хотя и против ожиданий анимации. Когда вы говорите «сделать анимацию самостоятельно», вы имеете в виду анимацию стиля NSTimer? Кроме того, я предполагаю, что реализация тросов семейства методов проявит такое же поведение? – bensnider
Итак, да, используя анимацию NSTimer, я могу использовать кнопку таким образом. Благодарю. – bensnider
Вы также можете совершать касание самостоятельно и не полагаться на кнопку вообще. Это все равно потребует некоторой ручной анимации, но может дать вам лучшие результаты для взаимодействия. – axiixc