J'ai une sous-classe de UILabel (MYLabel), et j'ajoute des instances de MYLabel à la vue principale de ViewController puis je les anime (en utilisant [UIView beginAnimations:] et [UIView commitAnimations] .Problème avec la détection des contacts à l'intérieur d'un UILabel
Si j'ai une instance statique de mon MyLabel, il n'a pas de problème étant touché et appelant touchesBegan:., mais alors qu'ils animaient, ils ne reconnaissent pas des touches
MyLabel a une touchesBegan: méthode qui est supposé faire des choses, et je suppose que mon MainViewController doit remplacer touchesBegan pour vérifier si le contact intersecte une instance de MYLabel, et si c'est le cas, appelez touchesBegan de MYLabel: e explicitement.
Semble-t-il que je vais dans la bonne direction? Cela semble un peu trop compliqué, et je ne trouve pas de bons exemples qui essaient de faire quelque chose de similaire, en dépit de ma conviction que c'est une chose assez simple à faire que font beaucoup d'applications.
-Commencez Mises à jour
Voici le code que je utilise pour ajouter et animer MyLabels. Je pense que je vais avoir besoin de faire les animer d'une manière différente ...
- (void)onTimer
{
label = [[MYLabel alloc] initWithFrame:CGRectZero];
int xValue = 380;
int yValue = (arc4random() % 400) +1;
double speed = 4.0;
int randomWord = (arc4random() % [[dictionarySingleton wordArray] count]);
UIFont *font = [UIFont systemFontOfSize:22];
[label setText:[[dictionarySingleton wordArray] objectAtIndex:randomWord]];
[label setFont:font];
[label sizeToFit];
[label setFrame:CGRectMake(xValue, yValue, [label frame].size.width, [label frame].size.width)];
[label setBackgroundColor:[UIColor clearColor]];
[label setIsAnimating:YES];
NSLog(@"Is Animating");
[[self view] addSubview:label];
[UIView beginAnimations:nil context:label];
[UIView setAnimationDuration:speed];
[label setFrame:CGRectMake(-120, yValue, [label frame].size.width, [label frame].size.width)];
[UIView setAnimationDidStopSelector:@selector(onAnimationComplete:finished:context:)];
[UIView setAnimationDelegate:self];
[UIView commitAnimations];
}
- (void)onTimer gets called inside viewDidAppear: like this:
[NSTimer scheduledTimerWithTimeInterval:(0.7) target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
J'espère que cela aide à clarifier les choses. Je pense que je pourrais avoir juste changer la façon dont l'interaction est traitée dans cette application ...
Tout d'abord, merci. J'ai mis à jour ma question pour inclure le code que j'utilise pour ajouter MYLabels à ma vue et les animer. Je pense à la façon dont je suis en train de les ajouter, de déterminer quel MYLabel a été touché et d'appeler la touche touchée de MYLabel'sBegan: la méthode est impossible. Cela a-t-il du sens? – YuKagi