Existe-t-il un moyen de déclencher par programmation un événement de clic de bouton? J'ai un bouton placé dans une vue UIV, et dans un scénario particulier, je veux cliquer sur le bouton via un code, pas manuellement en tant qu'utilisateur. Est-ce possible dans le développement iOS? S'il vous plaît fournir vos suggestions et me guider comment faire.
Merci.
Un peu comme la réponse de Ken, mais plus flexible car elle gardera une trace des actions réelles des boutons si vous les modifiez ou si vous en ajoutez plusieurs.
[button sendActionsForControlEvents:UIControlEventTouchUpInside];
J'ai eu le même problème que ci-dessus. J'aurais posté un commentaire, mais ma réputation n'est pas assez bonne. Donc, je vais plutôt poster la réponse complète:
[btn setHighlighted:YES];
[btn sendActionsForControlEvents:UIControlEventTouchUpInside];
[btn performSelector:@selector(setHighlighted:) withObject:NO afterDelay:0.25];
Cela va appuyer sur le bouton par programme et le surligner pour une durée apparemment normale. La suggestion de Richie n'a pas fonctionné, le bouton n'étant mis en surbrillance (voire pas du tout) pendant un temps imperceptible.
Pourquoi ne pas simplement exécuter le code qui s'exécute lorsque l'utilisateur appuie sur le bouton?
-(void)myMethod
{
// do stuff
}
-(IBAction)myButtonClick:(id)sender
{
[self myMethod];
}
-(void)clickMyButton
{
[self myMethod];
// OR
[self myButtonClick:nil];
}
Si vous parlez d'un UIButton, vous pouvez simplement appeler la même méthode que celle que UIButton appelle quand il est exploité. Par exemple:
[self myButtonsTargetMethod];
Oui,
[_button setHighlighted:YES];
[_button sendActionsForControlEvents:UIControlEventTouchUpInside];
[_button setHighlighted:NO];
Mais le problème ici est que vous ne pourrez pas voir ces événements parce que c'est trop rapide. vous pouvez donc essayer le code ci-dessus avec NSTimer.
NSTimer *quick = [NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:@selector(MeFirst:) userInfo:nil repeats:NO];
MeFirst est la méthode que j'ai créée.