2017-10-08 4 views
0

Je travaille sur une application de calcul. et a tonne de bouton que je stocke dans un grand stackView (créé en SB et pas de sortie). chaque bouton génère une ombre (également définie dans l'attribut SB). Je veux me débarrasser de l'ombre lorsque le bouton a été enfoncé. tapGestureRecognizer ou l'action cible ne pouvait affecter qu'un seul UIButton. aucune façon pratique pour acheivebeaucoup de bouton ajouter même addTarget (_: action: pour :) méthode

PS Je veux dire lorsque le bouton .touchupinside ou tapGestureRecognizer .start .END lorsque le bouton de déplacement du doigt devrait encore jeter l'ombre

aide appréciée

+0

Vous utilisez SB, mais vous n'utilisez pas prises, est-ce qu'une exigence? Voulez-vous supprimer l'ombre de tous les boutons, quand on a tapé? – crom87

+0

Vous pouvez simplement ajouter la même cible pour de nombreux boutons ... quel est le problème? –

+0

@ crom87 est correct pour régler la sortie juste je ne pouvais pas donner à chaque bouton une sortie ~ juste enlever celui touché – jin

Répondre

3

UIButton sera mis en évidence sur un clic, afin de vérifier réglage du bouton Changer la couleur du titre en surbrillance config état de même que l'état par défaut ou vous pouvez définir:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted]; 

Si vous souhaitez contrôler mis en évidence par le code, vous pouvez désactiver norma l mis en évidence par la sous-classe Bouton et désactiver dans touchesBegin:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    if (self.state == UIControlStateHighlighted) { 
     [self setHighlighted:NO]; 
    } 
} 
+0

Avez-vous remarqué que l'un des tags utilisés est "Objectif -C ", je pense que votre réponse devrait être écrite dans Swift :) –

+0

En utilisation rapide comme: button.selected = false –

+0

merci beaucoup .. bonne réponse .. encore quelques problèmes .. Je suis en train de définir l'attribut du bouton dans le storyboard pas titleColor mais l'ombre de couche bouton .. y at-il un moyen UIButton sous-classe pour atteindre – jin

0

Vous pouvez attribuer le même IBAction à plusieurs boutons, de sorte que la même méthode est appelée pour tous les

func buttonDidTouch(sender:UIButton) {} 

Si maintenant vous voulez identifier quel bouton est appelé, vous pouvez utiliser la propriété UIButton.tag pour l'identifier. L'étiquette peut être définie dans le SB pour chaque bouton.

+0

tks .. éditer la question deviner ne pas le dire clairement je veux dire lorsque le bouton .touchupinside ou appuyez sur .start .endormi lorsque le bouton de déplacement du doigt devrait encore couler l'ombre – jin

0

Il ya tellement de façons d'atteindre l'objectif, mais je vais avec ci-dessous.

Donne juste ma logique. Prendre une variable optionnelle temporaire de UIButton

Ex.

var myTemButton: UIButton()? 

Dans la méthode d'action bouton

@IBAction func myButtonActionFunc(_ sender: UIButton) { 
    if myTemButton == nil { 
    myTemButton = sender 
    } 
    else { 
    // Use "myTemButton" and write here code for remove shadow Or other stuff that you want. 
    } 

    // use "sender" and write code here for apply shadow of button or other stuff that you want. 
} 
+0

tks .. éditer la question deviner ne pas le dire clairement, je veux dire quand le bouton .touchupinside ou appuyez sur Démarrer pour se débarrasser de l'ombre quand appuyez sur terminé puis retrouvez l'ombre ... – jin