J'ai donc créé un TableViewCell personnalisé, et dans la plume j'ai mis un UISwitch
. Avant même que je l'ai accroché à quelque chose, si je l'ai couru dans le simulateur et cliqué dessus, il allumerait de l'éteint à sur avec l'animation et tel.Désactiver la commutation automatique lorsque vous cliquez sur UISwitch?
J'essaie d'ajouter une fonctionnalité où l'utilisateur n'est autorisé à passer de l'état activé à désactivé que lorsqu'une certaine condition est vraie. Je le veux donc, lorsque l'utilisateur touche le commutateur, il vérifie si la condition est vraie, et si ce n'est pas le cas, le commutateur ne bouge pas.
J'ai mis en place un IBAction
où si l'utilisateur touche à l'intérieur, il va exécuter ma fonction. Ma fonction est la suivante:
if([on_switch isOn])
{
if([my_switch canSwitchOn])
{
NSLog(@"SWITCHED ON SUCCESSFULLY");
[on_switch setOn:TRUE animated:TRUE];
}
else
{
NSLog(@"SWITCHED ON UNSUCCESSFULLY");
//Put in popup here
}
}
else
{
[[ClassesSingleton sharedSingleton] classSwitchedOff:cell_index];
[on_switch setOn:FALSE animated:TRUE];
}
Cependant, peu importe ce que je fais, ce commutateur inversera, même si je lui ai donné aucune instruction de le faire. Je suis à peu près sûr que c'est l'auto-flip qui l'a fait même avant que j'y aie accroché quoi que ce soit. Y a-t-il un moyen de l'éteindre?
Merci!
J'ai essayé ça. Le problème est, il est sur un TableViewCell. Lorsque je désactive userInteractionEnabled et que j'essaie de cliquer sur le bouton, il touche la cellule derrière lui. La cellule va à une autre vue. J'en ai besoin pour toujours compter comme un objet, de sorte que la cellule ne soit pas touchée, mais pas l'autoswitch. – Ethan
Vous pouvez vous rendre la vie facile en collant un UIView régulier sous le bouton (de la même taille exacte) qui a userInteraction Enabled. Ensuite, lorsque vous l'éteignez sur le bouton, les touches passeront à travers le commutateur, mais seront mangées par la vue régulière et ne toucheront jamais la cellule TableView –
Une autre option serait simplement de mettre activé à NON sur le commutateur. Il grise le commutateur, de sorte que vous pouvez réellement dire qu'il ne fera rien avant d'appuyer dessus, et il ne passera pas le robinet à la cellule derrière elle. –