2014-07-15 3 views
1

Bonjour, je crée des customUIButtons dans mon application en utilisant le code suivant.UIButton conserve son éclat après avoir été touché

+ (NSArray *) createButtonItemNormalImage:(UIImage *)normalImage 
         highlightImage:(UIImage *)highlightImage 
         disabledImage:(UIImage *)disabledImage 
         touchUpSelector:(SEL)selector 
           target:(id)target 
{ 

// HighlightImage is not used. Highlight is shown using iOS glow 
UIButton *uiButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
uiButton.bounds = CGRectMake(0, 
          0, 
          normalImage.size.width, 
          normalImage.size.height); 
[uiButton setImage:normalImage 
      forState:UIControlStateNormal]; 

if (disabledImage) 
{ 
    [uiButton setImage:disabledImage 
       forState:UIControlStateDisabled]; 
} 
[uiButton addTarget:target 
      action:selector 
    forControlEvents:UIControlEventTouchUpInside]; 

uiButton.showsTouchWhenHighlighted = YES; 

UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:uiButton]; 

return [NSArray arrayWithObjects:buttonItem, uiButton, nil]; 
} 

J'ai fait un bouton d'annulation en utilisant la fonction ci-dessus. Le bouton d'annulation amène l'utilisateur d'un écran à un autre écran. Le problème est quand je reviens au premier écran le bouton d'annulation est toujours brillant. J'ai déjà vu ce problème mais aussi un appel à [self.view setNeedsLayout] pour le résoudre.

Pourquoi cela arrive-t-il et quelle serait la bonne façon de le résoudre? Merci!

+0

uiButton.showsTouchWhenHighlighted = OUI; TO uiButton.showsTouchWhenHighlighted = NON; –

+0

@DarshanKunjadiya Je veux que le bouton ne brille que lorsqu'il est touché. Si vous définissez uiButton.showsTouchWhenHighlighted = NO, le bouton ne s'allume pas du tout. Le problème est qu'il brille même lorsqu'il n'est pas touché. – shshnk

+0

J'ai le même problème avec juste l'un des six boutons sur une vue. Tous les six sont configurés de manière identique, mais pour une raison quelconque, un seul d'entre eux ne parvient pas à "déglacer" après avoir été touché. Très frustrant. J'ai régénéré le bouton offensant plusieurs fois mais rien ne semble résoudre le problème. –

Répondre

0

Pour résoudre ce problème de façon moins standard, je mets maintenant l'état surligné à non pour tous les boutons lorsque j'entre dans le premier écran. J'utilise myButton.highlighted = NO;. Cependant, la documentation dit suivante pour la propriété highlighted.

Spécifiez OUI si le contrôle est en surbrillance; sinon NO. Par défaut, un contrôle n'est pas mis en surbrillance. UIControl règle et efface automatiquement cet état quand une touche entre et sort pendant le suivi et quand il y a une retouche.

Son ne se passe pas ainsi dans mon case.I aimerait connaître la raison et des moyens standards de résoudre

Questions connexes