2015-10-06 2 views
3

Puisqu'il n'y a pas UISwitch dans tvOS, j'utilise un UIButton pour implémenter une simple bascule On/Off. J'ai défini le texte du titre du bouton pour UIControlStateNormal et UIControlStateSelected pour indiquer l'état activé/désactivé du bouton, mais le nouveau UIControlStateFocused interfère maintenant avec ceci en définissant le texte du titre comme identique à l'état par défaut lorsque le bouton est actif. Cela signifie que lorsque le bouton est sur "On", à chaque fois qu'il est mis au point, son titre devient "Off". La seule façon que j'ai trouvée pour contourner cela est de définir explicitement le titre de l'état focalisé dans le gestionnaire de boutons comme indiqué ci-dessous.UIButton dans tvOS: l'état focalisé interfère avec le texte

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // in reality these strings are setup in the storyboard 
    [self.enabledButton setTitle:@"Off" forState:UIControlStateNormal]; 
    [self.enabledButton setTitle:@"On" forState:UIControlStateSelected]; 
    // ensure the text shows up in focused state 
    [self.enabledButton setTitleColor:[UIColor blackColor] forState:UIControlStateFocused]; 
} 

- (IBAction)toggleStateForEnabledButton:(id)sender 
{ 
    UIButton *button = (UIButton *)sender; 
    button.selected = !button.selected; 
    if (button.selected) 
    { 
     [button setTitle:[button titleForState:UIControlStateSelected] forState:UIControlStateFocused]; 
    } 
    else 
    { 
     [button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateFocused]; 
    } 
} 

Cela me semble très hackish, esp. car il pourrait y en avoir beaucoup en l'absence d'UISwitch. Y a-t-il un meilleur moyen?

Répondre

0

Avez-vous essayé de définir un titre pour UIControlStateFocused | UIControlStateSelected? C'est un peu le champ, donc devrait être possible de les combiner.