setEnabled et opacité

Philippe49Philippe49 Membre
07:01 modifié dans API UIKit #1
A l'essai quand je mets l'opacité d'un bouton à  0, le bouton devient desabled :
      myButton.layer.opacity=0. ==> [myButton setEnabled:NO]

C'est compréhensible qu'une vue non visible soit soustraite à  la chaà®ne des responder, mais est-ce écrit noir sur blanc quelque part dans la doc ? 
(de manière opaque en quelque sorte !  ;D )

Réponses

  • AliGatorAliGator Membre, Modérateur
    07:01 modifié #2
    Ca dépend, c'est vrai que ce n'est pas très transparent comme comportement :) mais la doc de NSControl dit bien
    isEnabled

    Returns whether the receiver reacts to mouse events.

    [tt]- (BOOL)isEnabled[/tt]
    Return Value

    YES if the receiver responds to mouse events; otherwise, NO.
    Donc ça dit bien si ça répond ou non aux mouse events... Ce qui n'est pas juste dépendant d'un "flag" que tu mets avec setEnabled à  ton NSControl pour lui dire qu'il répond aux events, mais aussi à  sa visibilité.
    Donc je ne dirais pas que btn.layer.opacity =0 implique un "setEnabled:NO" mais plutôt que isEnabled retourne (enabledFlag && visible && layer.opacity>0) un truc comme ça.

    Que ce passe-t-il si au lieu de jouer sur self.layer.opacity tu joues sur l'attribut "visible" de ton NSControl ? Est-ce que ça fait aussi passer son enabled à  NO quand visible = NO ?
  • Philippe49Philippe49 Membre
    avril 2009 modifié #3
    dans 1239010075:

    Donc je ne dirais pas que btn.layer.opacity =0 implique un "setEnabled:NO" mais plutôt que isEnabled retourne (enabledFlag && visible && layer.opacity>0) un truc comme ça.

    C'est mon impression aussi.
    Ce serait officiel cela permettrait de ne pas doubler des instructions comme
    [playButton setEnabled:NO];<br />[playButton fadeWithDuration:2.0 from:1. to:0.0];<br />
    


    dans 1239010075:

    Que ce passe-t-il si au lieu de jouer sur self.layer.opacity tu joues sur l'attribut "visible" de ton NSControl ? Est-ce que ça fait aussi passer son enabled à  NO quand visible = NO ?

    visible c'est sur les NSWindow , il me semble
Connectez-vous ou Inscrivez-vous pour répondre.