Procédure de programmation pour mettre en évidence un UIButton?
J'ai eu beaucoup d'utilisateurs se plaignent que le petit "i" bouton info est difficile à toucher sur l'iPhone. Ok, assez simple-j'ai juste collé un big-fat bouton invisible derrière ce que vous ne pouvez pas manquer, même avec la sloppiest de doigts et, quand vous le touchez, il ne le infoButtonAction.
Chose, je tiens à clignoter le bouton "info", lui-même, pour environ .25 sec, juste pour donner un visuel "c'est ce qu'il se passe sur le type de rétroaction. Je veux dire, je suis déjà en supposant que vous avez voulu dire de frapper le bouton "i", donc, je suis juste le traiter comme si vous NE le frapper.
J'ai essayé ceci, mais ça ne fonctionne pas:
UIImage* normalImage = [_infoButton imageForState:UIControlStateNormal];
UIImage* highlighted = [_infoButton imageForState:UIControlStateHighlighted];
_infoButton.highlighted = YES; //flash the button
[_infoButton setImage:highlighted forState:UIControlStateNormal];
[_infoButton setNeedsDisplay]; //* FIXME: No flash?!
[(AppDelegate*)[[UIApplication sharedApplication] delegate] infoTap]; //do the info action
_infoButton.highlighted = NO;
[_infoButton setImage:normalImage forState:UIControlStateNormal];
[_infoButton setNeedsDisplay];
Des idées sur la façon d'obtenir le comportement que je veux?
(Je suis aussi ouverts à de nouvelles idées sur les commentaires des utilisateurs, mais toujours curieux de savoir comment je le ferais. Imaginez que, au lieu de cela, j'ai un "jeu"/blague où vous appuyez sur le bouton "ok" et "annuler" clignote, et vice versa, ou quelque chose de tout aussi stupide.)
OriginalL'auteur Olie | 2008-12-09
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous êtes le marquage de votre bouton en tant que besoin d'affichage (appel
-setNeedsDisplay
est inutile; le bouton appels en interne), mais alors, ne permettant jamais à l'exécution de la boucle une chance pour afficher la nouvelle image.Dans le Cacao, vous pouvez utiliser quelque chose comme
-performClick:
mais qui n'est pas disponible sur l'iPhone.Au lieu de cela, je vous suggère d'expérimenter avec l'appel de
-setSelected:
ou-setHighlighted:
avec un temps de retard entre les deux.OriginalL'auteur Mike Abdullah
Le bouton "i" doit être dimensionné de manière à 44x44 (Apple standard taille de doigt), ce qui peut être fait dans Interface Builder.
Pour certaines animations, je vous suggère de regarder dans Core Animation.
Peut-elle vraiment être redimensionnée de l'IB? La largeur & hauteur options sont grisées pour moi.
Je pense que quand j'ai écrit cela (et la question a été posée il fallait créer le bouton "i" dans le code. Maintenant, le bouton est disponible au bureau de l'IB.
OriginalL'auteur epatel
Je ne sais pas exactement ce qui se passe dans votre
infotap
méthode, mais il ne semble rien y avoir beaucoup de retard entre votre premièresetImage:
appel et la seconde. Ma conjecture est que les choses sont en train d'arriver plus vite que l'œil peut voir. Je vous suggère de regarderNSTimer
d'essayer de mettre un délai spécifique.OriginalL'auteur Matt Ball