UIButton dans UIView ne répond pas aux événements tactiles
J'ai mis un UIButton à l'intérieur d'un personnalisé UIView et le bouton n'est pas de recevoir tous les événements tactiles (il n'est pas mis en évidence de l'état, donc mon problème est pas sur le fait d'être incapable d'associer une touche à l'intérieur jusqu'à un gestionnaire). J'ai essayé les deux, les mettre dans la XIB dans Interface Builder, et j'ai aussi essayé par programmation à l'ajout de la UIButton dans le UIView séparément, les deux terminé avec pas de chance. Tous mes points de vue sont à l'intérieur d'un UIScrollView, j'ai donc d'abord si UIScrollView peut-être de les bloquer, donc j'ai aussi ajouté un bouton en programmant exactement de la même façon-je ajouter mon affichage personnalisé dans UIScrollView, et le bouton travaillé, l'élimination de la possibilité de UIScrollView pourrait en être la cause. De mon point de Vue est hiérarchique, c'est comme cela:
Le bouton est sur l'affichage de l'image, et l'avant de la couche n'est pas occupant de mon bouton complètement, donc il n'y a aucune raison pour moi de ne pas être interagir physiquement avec le bouton. À ma vue personnalisée du code côté, je suis la création de mon point de vue en tant que telle:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
//Initialization code
UIView *sub = [[[NSBundle mainBundle] loadNibNamed:@"ProfileView" owner:self options:nil] objectAtIndex:0];
[self addSubview:sub];
[sub setUserInteractionEnabled:YES];
[self setUserInteractionEnabled:YES];
CALayer *layer = sub.layer;
layer.masksToBounds = YES;
layer.borderWidth = 5.0;
layer.borderColor = [UIColor whiteColor].CGColor;
layer.cornerRadius = 30.0;
/*layer.shadowOffset = CGSizeZero;
layer.shadowRadius = 20.0;
layer.shadowColor = [[UIColor blackColor] CGColor];
layer.shadowOpacity = 0.8;
*/
}
return self;
}
J'ai essayé toutes les combinaisons de setUserInteractionsEnabled
et n'avait pas de chance. (Oui, aussi les mettre à vérifié dans Interface Builder). J'ai aussi lu dans une autre question avec un problème similaire que je devrais essayer primordial 'canBecomeFirstResponder de" retourner " OUI " et j'ai aussi fait ça aussi. Mais le problème persiste, je ne peux pas cliquer sur le bouton. Je n'ai pas donné toutes les propriétés spéciales, les paramètres pour le bouton, c'est juste un ordinaire. Mes autres objets dans la vue (les étiquettes ci-dessous, l'image vue à l'arrière du bouton, etc.) sont fonctionne correctement sans problèmes. Ce qui pourrait être éventuellement mal ici?
Merci,
Peut.
Mise à JOUR: Voici un rapide reproduction du problème: https://dl.dropbox.com/u/79632924/Test.zip
Essayez d'exécuter et cliquez sur le bouton.
source d'informationauteur Can Poyrazoğlu | 2012-11-25
Vous devez vous connecter pour publier un commentaire.
En regardant le projet de test, je crois que votre problème dans la façon dont vous créez TestView, vous ne spécifiez pas le cadre pour elle, donc, fondamentalement, la vue parent est 0, la taille, et le sous-vues vous voir partir XIB s'étendant hors de la vue parent et donc de ne pas obtenir quoi que ce soit en intervenant de la chaîne.
Vous devez spécifier l'image lors de la création de TestView, ou ajuster l'image après le chargement du fichier XIB.
J'ai eu ce problème aussi. La cause a été pour moi que le
UIButton
superview cadre est de hauteur 0, donc, je crois que, même si une touche qui se passait, il n'a pas été transmis à la bouton.Après s'assurant que le bouton de superview a pris un grand rectangle comme une image le bouton actions travaillé.
La cause de ce problème de mon côté a été une mauvaise mise en page automatique de mise en œuvre (j'ai oublié de régler la hauteur de contrainte pour le bouton de superview).
J'ai trouvé la solution. J'ai été l'initialisation de ma vue personnalisée:
J'ai initialisé à la place une image de mon point de vue de la taille, et il commença à réagir à des événements: