У меня есть подкласс UIButton, который выполняет некоторые пользовательские рисования и анимации. Все это прекрасно работает и денди.Подкласс UIButton: вызов [super touchesEnded:] После завершения пользовательских анимаций
Тем не менее, большинство моих кнопок отклоняют текущий вид через свой супервизор, вызывая [self rejectViewControllerAnimated], как только он подтверждается моделью, что все, что должно было сделать нажатие кнопки, было сделано, и я хочу, чтобы там была задержка чтобы анимация завершилась, прежде чем отклонить представление.
Я могу легко анимировать подкласс UIButton на touchEnded, а затем вызвать [super touchesEnded], который отлично работает, за исключением того, что он не позволяет моим анимациям заканчиваться, прежде чем отклонять представление. Как это:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CABasicAnimation *myAnimation = [CABasicAnimation animationWithKeyPath:@"transform.foo"];
//set up myAnimation's properties
[self.layer addAnimation:shakeAnimation forKey:nil];
[super touchesEnded:touches withEvent:event]; //works! but no delay
}
Моя первая попытка создать задержку была с помощью CATransaction следующим образом:
Который, насколько я могу судить, выполняет completionBlock CATransaction, но это просто ISN ничего не делаю.
Я также попытался назначить аргументы касаний и событий от touchEEded к свойствам и глобальным переменным, а затем выполнить [super touchesEnded] в другом методе, вызванном NSTimer. То же самое происходит, когда код выполняется, но мой вызов [super touchesEnded] ничего не делает.
Я выкопался через Интернет в течение нескольких часов. Добавлены заглушки других методов касания от UIResponder, которые просто содержат [super touch ...]. Пробовал настраивать мои глобальные переменные для метода, называемого NSTimer по-разному (я очень хорошо могу что-то пропустить в отношении глобальных переменных ...). Эта кнопка создается раскадкой, но я установил класс в свой собственный класс, поэтому я не думаю, что метод кнопки UIButton + (UIButton *)WithType влияет на это.
Что мне не хватает? Есть ли какая-то небольшая вещь, о которой я забываю, или нет способа отложить вызов [super touchesEnded] из подкласса UIButton?