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?