2010-12-16 175 views
36

Quand je lance mon application et je clique sur le bouton pour actionsheet apparaît ceci:Problème avec UIActionSheet

Présenter la feuille d'action clipsé par son superview. Certains contrôles peuvent ne pas répondre aux touches. Sur iPhone, essayez - [UIActionSheet showFromTabBar:] ou - [UIActionSheet showFromToolbar:] au lieu de - [UIActionSheet showInView:].

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

Répondre

28

Vous pouvez essayer [MyActionSheet showInView:super.view]; ou si vous avez un UITabBar ou UIToolbar alors, comme il l'indique, vous pouvez utiliser [MyActionSheet showFromTabBar:self.tabBarController.tabBar]; ou [MyActionSheet showFromToolBar:self.toolbar];

12

Il devrait être résolu à utiliser [actionSheet showInView:self.parentViewController.view]; au lieu de self.view si vous utilisez UINavigationViewController parce que ce contrôleur a la barre de navigation supérieure par défaut.

+0

ou self.navigationController.view Merci – LolaRun

1

Je résolu mon presque-le même cas par:

YourAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
[actionSheet showFromTabBar:delegate.tabBarController.tabBar]; 

suppose que vous utilisez modèle TabBarController xCode comme un début.

61

Essayez cela, il a travaillé pour moi parfaitement:

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

Merci, cette technique a résolu mon problème. –

+0

Bienvenue le plus cher! – VSN

+0

parfaitement :)) juste ce que je cherchais !! – filou

0

Rappelez-vous que votre barre d'outils peut faire partie de votre contrôleur de navigation. Vous pouvez y accéder avec self.navigationController.toolbar

5
[sheet showInView:[UIApplication sharedApplication].keyWindow]; 
    sheet.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height-sheet.frame.size.height, [UIScreen mainScreen].bounds.size.width, sheet.frame.size.height); 

Cela devrait résoudre le problème.

+0

Merci, celui-ci était le seul à travailler pour moi (avec de légers ajouts à travailler avec et sans contrôleur de navigation). A eu un problème similaire avec une configuration de fenêtre iOS6 + iOS7 personnalisée, lorsque pour iOS7 vous décalez votre fenêtre de 20 points et tout laisser comme il est. –

0

Une autre solution similaire, ce qui a fonctionné pour moi avec un UIPageViewController -> UINavigationViewController -> structure TableViewController, est:

[actionSheet showInView:self.view.superview]; 
0

Utilisez ceci:

[actionSheet showInView:self.view.window]; 

Cela forcera la feuille d'action à s'affiche au-dessus des barres de navigation et répond à tous les taps. Notez cependant que si vous utilisez des bibliothèques de menus coulissantes gauche/droite, la feuille d'action peut être affichée hors écran. Juste tester ...

0

J'ai essayé toutes les réponses ci-dessus en vain. En fin de compte, j'ai trouvé que la seule solution était de réduire le nombre d'éléments sur la feuille d'action, qui débordait.

0

Heres la version Swift:

actionSheet.showInView(UIApplication.sharedApplication().keyWindow)