13 votes

Le bouton d'annulation de UIActionSheet pour ios ne fonctionne pas correctement

J'ai ce problème : voici mon code :

UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@"Share the race" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Send with mail" otherButtonTitles:nil];
    popupQuery.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
    [popupQuery showInView:self.view];
    [popupQuery release];

et tout semble correct, les 2 boutons sont affichés correctement, le bouton "envoyer avec le mail" est correct, mais le bouton "annuler" ne capte le clic que sur la partie supérieure.... Voici une photo qui illustre la situation :

error click!

comment puis-je résoudre ce problème ?

merci :)

37voto

PengOne Points 33226

Je pense que la partie inférieure de la UIActionSheet s'étend au-delà des limites de la vue, et ne répond donc pas aux touches.

Pour tester cette théorie, ajoutez un autre bouton et voyez si tous les boutons supérieurs fonctionnent correctement mais que le bouton inférieur présente toujours ce comportement.

Pour résoudre ce problème, assurez-vous que la vue s'étend jusqu'au bas de l'écran. Si vous avez une barre de tabulation dans votre application, c'est elle que je soupçonne d'être à l'origine du problème. Vous pouvez utiliser showFromTabBar: si vous voulez que la feuille soit au-dessus de la barre de tabulation, ou showFromToolbar: pour l'afficher depuis une barre d'outils.

Si vous n'avez pas de barre inférieure, alors je me trompe et je n'ai aucune idée.

7voto

Ajay Chaudhary Points 976

Vous devez afficher la feuille d'action comme une sous-vue de la fenêtre d'application, et non de la vue actuelle.

UIActionSheet *actionSheet = [[UIActionSheet alloc] init...];

// ...

[actionSheet showInView:[UIApplication sharedApplication].keyWindow];

Peut-être que cela aidera d'autres personnes.

Bon codage :)

2voto

Amitabha Points 936

Utiliser

[actionSheet showFromTabBar:[[self tabBarController] tabBar]];

au lieu de

[actionSheet showInView:self.view];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X