animationDidStop установлен, но не вызывается (кодирование приложения iPhone) - PullRequest
1 голос
/ 20 июля 2009
#import "MyViewController.h"

@implementation MyViewController
@synthesize menuView, gameView, helpView, optionsView, gameButton, helpButton, optionsButton;

- (void) viewDidLoad {
[self setView:menuView];
}

 - (IBAction)gotoGame {
[UIView beginAnimations:@"buttonSlide" context: nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationDidStopSelector:@selector(animationDidStop)];
gameButton.center = CGPointMake(104,1000);
[UIView commitAnimations];
 }

- (IBAction)gotoHelp {
[self setView:helpView];
}

- (IBAction)gotoOptions {
[self setView:optionsView];
}

- (void)animationDidStop {
NSLog(@"why is this not working?");
[self setView:gameView];
}


@end

Не был уверен, что было бы полезно, поэтому я включил весь файл .m. Во всяком случае, я новичок в разработке приложений для iPhone, и я изо всех сил пытаюсь закончить свою анимацию. Сама анимация работает отлично, но метод animationDidStop отказывается вызываться ... даже если я использую setAnimationDidStopSelector, как это показано в документации. Я знаю, что изменение представления работает, потому что когда я помещаю его после анимации в gotoGame {}, оно переключается, однако это делает его таким, чтобы анимация не отображалась.

Может ли кто-нибудь помочь мне вызвать этот метод после остановки анимации или с помощью таймера, чтобы вызвать его после необходимого времени? (Я тоже попробовал этот метод, но безуспешно).

Ответы [ 2 ]

3 голосов
/ 27 июля 2009

Мало того, что [UIView setAnimationDelegate: self] должен быть вызван, но если вызывающий метод анимации является статическим, делегат также должен быть статическим. Большинство примеров используют нестатические методы для вызова анимации, поэтому это может вызывать недоумение (по крайней мере, для меня), если вы используете статические методы для анимации.

2 голосов
/ 10 апреля 2010

добавить [UIView setAnimationDelegate: self];

...