Сенсорная часть кнопки не будет совпадать с видимой рамкой кнопки во время ее анимации.
Внутри рамки кнопки будет установлено окончательное значение из вашей анимации.Вы должны найти, что вы можете нажать в этой области, и это будет работать.
Чтобы нажать движущуюся кнопку, необходимо выполнить тестирование нажатия на свойстве .layer.presentationLayer
кнопки (для этого необходимо импортировать инфраструктуру QuartzCore).Обычно это делается с помощью методов обработки касаний в вашем контроллере представления.
Я буду рад продолжить этот ответ, если вам понадобится больше.
Вот как вы будете реагировать на сенсорное событие при помощи тестирования слоев презентации.Этот код находится в подклассе контроллера представления, который управляет вашими кнопками.Когда я сделал это, меня заинтересовал первоначальный контакт, а не окончание касания (которое обычно происходит при регистрации касания), но принцип такой же.проект.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:self.view];
for (UIButton *button in self.buttonsOutletCollection)
{
if ([button.layer.presentationLayer hitTest:touchLocation])
{
// This button was hit whilst moving - do something with it here
break;
}
}
}