UIButton à l'intérieur d'une UIView pas de travail après UIView est animé
J'ai vu beaucoup de questions dans ce forum qui donne réponse à ce sujet "UIButton à l'intérieur d'une UIView, lors de l'animation ne fonctionne pas", mais après avoir essayé les réponses comme
a) UIViewAnimationOptionAllowUserInteraction to the options
b) subView.setUserInteractionEnabled = YES
c) [button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
aucun d'entre eux travaille pour moi 🙁
Voici le scénario. Application est en mode paysage et une UIView appelé menuView est placé en x=480,y=0. Sa hauteur=200 et largeur=150. Donc, quand j'appuie sur le bouton dans le coin supérieur droit, le code suivant est exécuté
- (IBAction)showMenu {
[menuView setUserInteractionEnabled:YES];
[optionsButton setUserInteractionEnabled:YES];
[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationCurveEaseOut | UIViewAnimationOptionAllowUserInteraction
animations:^{
self.view.frame = CGRectOffset(self.view.frame, 0, 200);
}
completion:NULL];
}
Sortie?: La vue est à apparaître, mais optionsButton à l'intérieur de la menuView n'est pas cliquable. Je l'ai connecté à un événement, a fait un NSLog(@"Options du bouton cliqué"), mais rien ne se passe 🙁
S'il vous plaît dites-moi ce que je fais de mal?
Mise à jour: Quand je place la sous-vue qui est "menuView" à l'intérieur de l'auto.vue, puis lors de l'exécution et cliquez sur le optionsButton, je reçois le NSLog message. Seulement si je me préciser l'origine.x de menuView à 480 et au-dessus, ça ne fonctionne pas.
qui n'a pas été raccordé à une prise de courant? Si vous parlez du bouton ou de la vue, j'ai accroché bot jusqu'à une prise de courant dans mon .h fichier @ property (faible, nonatomic) IBOutlet UIView *menuView; @ property (faible, nonatomic) IBOutlet UIButton *optionsButton;
Définissez un point d'arrêt et d'être sûr, alors.
pouvez-vous essayez de mettre le bouton à l'avant après
self.view.frame = CGRectOffset(self.view.frame, 0, 200);
et laissez-moi savoir la suiteJe l'ai fait et ça ne fonctionne pas [self.vue bringSubviewToFront:optionsButton];
OriginalL'auteur thandasoru | 2013-03-03
Vous devez vous connecter pour publier un commentaire.
Si vous pouvez voir les UIButton, son userInteractionEnabled (OUI par défaut!) est, et son superview de userInteractionEnabled dans l'ensemble de la hiérarchie est OUI, vous devriez être en mesure d'interagir avec elle.
Une animation ne changera jamais votre userInteractionEnabled propriété! Donc, ce que vous faites, il est tout simplement inutile. Si vous essayez d'activer l'interaction pendant animation - c'est une autre histoire, et est juste une option passée à l'animation de message.
Donc, si ce n'est pas votre problème (et est probablement pas), alors je suppose que l'un des superview est le recadrage le UIButton!
Maintenant à vous de voir, si un UIButton (ou tout UIView) est à l'extérieur d'un UIView'image, il peut toujours être visible, à moins que clipsToBounds est réglé sur le superview.
Et le résultat de cette situation est la suivante: Vous pouvez me voir, mais vous ne pouvez pas me toucher.
Si je place le menuView à l'intérieur de mon auto.afficher et exécuter l'application, il fonctionne. Seulement si je place menuView à l'extérieur et essayer de compenser l'auto.vue.image par 200, alors il ne fonctionne pas. Je pense que cela peut-être dû au fait que le menuView n'est pas à l'intérieur de soi.vue. donc, si j'augmente la largeur de l'auto.vue de prendre en compte la menuView, alors il devrait fonctionner, non?
Si vous placez menuView "en dehors" de l'auto.vue - alors où est-il exactement? Pouvez-vous décrire la hiérarchie des vues précisément?
auto.la vue est paysage. C'est la largeur est de 480, la hauteur est de 300. menuView origine.x 480 et la largeur est de 200. Il y a un bouton sur l'auto.vue à x=427. si je touche le bouton auto.la vue se déplace de gauche par la largeur de menuView. Ai-je correctement décrite?
Ouais, c'est logique. Je ne peux pas dire si menuView est sous-vue de l'auto.afficher ou pas, et quelles sont les mesures exactes, mais NSLogging le point de vue themeselves, ainsi que leurs sous-vues de tableau et superview de la propriété, peut donner une image complète. De toute façon, vous voyez que la seule (simple) explication possible, est ce qui fonctionne. Votre UIButton était en dehors des limites. Je ne peux pas dire hors de la vue qui est des limites, mais quand même 🙂
OriginalL'auteur daniel.gindi
Dans mon cas, manquant une contrainte sur la hauteur du contenant de la visibilité causée la vue en hauteur de 0. Les boutons étaient visibles, au-dessous de la vue, mais intouchable.
OriginalL'auteur Dan Loughney
Pour moi, il était tout au sujet d'un négligé erreur dans le code d'animation elle-même. D'où ma nouvelle hauteur, a été appelé en fait j'ai été appeler ma nouvelle largeur, et où ma nouvelle largeur est appelé j'ai été réellement appeler ma nouvelle hauteur, à cet effet, causant la UIView être super long et super étroit, ce qui pousse tout le contenu dans le centre de la vue, hors de la vue de l'atteindre.
Changer votre UIViews couleur de fond Rouge, de sorte que vous pouvez réellement voir où il anime.
Si votre UIView est dans un autre point de vue, tournez sur
clipSubviews
de sorte que vous ne voyez que ce qui est réellement activé dans lesubView
.Exécuter votre projet.
Si votre UIView n'est pas normal hauteur et en largeur, plus que probablement vous avez négligé un peu de code dans votre animation appel.
Assurez-vous que votre
x, y, width, height
sont indiquées dans le bon de commandes dans le code d'animation.OriginalL'auteur Felecia Genet
Dans mon cas, il me semble que mon animation de la transition n'est pas encore terminée. J'ai oublié de mettre
completeTransition:Bool
à la fin de monanimateTransition:context
méthode.OriginalL'auteur John Paul Manoza