J'ai un UIBarButtonItem ouvrant une feuille d'action pour offrir aux utilisateurs des choix sur ce qu'il faut faire. Tout fonctionne comme prévu à moins que j'essaye de cliquer sur le bouton "Annuler". La cible du bouton semble s'être déplacée de l'endroit où elle devrait être. Je ne peux l'activer qu'en cliquant quelque part au milieu des boutons "Annuler" et "Ok".
J'ai essayé des feuilles d'action dans d'autres applications et elles fonctionnent bien, donc ce n'est pas seulement mon gros pouce. La feuille d'action s'ouvre dans un UIViewController
- (void)showOpenOptions
{
UIActionSheet *sheet = [[UIActionSheet alloc]
initWithTitle:NSLocalizedString(@"Open link in external application?", @"Open in external application")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel")
destructiveButtonTitle:NSLocalizedString(@"Open Link", @"Open Link")
otherButtonTitles:nil];
[sheet showInView:self.view];
[sheet release];
}
ios
objective-c
iphone
cocoa-touch
uiactionsheet
roi nevan
la source
la source
Réponses:
Au lieu de transmettre la vue du contrôleur de vue actuel à la feuille d'actions, utilisez la
showFromTabBar:
méthode deUIActionSheet
.La bonne manière
Cela donnera la bonne zone de frappe:
La mauvaise manière
Cela placera la zone de frappe au mauvais endroit (si vous utilisez une barre d'onglets ou une barre d'outils):
Si vous utilisez une barre d'outils , utilisez
showFromToolbar:
plutôt la méthode. Vous aurez besoin d'une référence à la barre d'outils, probablement un ivarMa vieille réponse fonctionne également, mais est piratée:
Je viens de trouver une réponse possible:
http://openradar.appspot.com/6410780
Modifier: cela fonctionne correctement lorsque je change la vue en vue de la barre d'onglets
la source
J'ai trouvé une réponse ici qui fonctionne.
en utilisant
[filterActionSheet showInView:[self.view window]]
:;J'ai essayé plusieurs façons d'accéder à ma barre d'onglets et la façon dont cette application est configurée semble alambiquée ...
la source
Utilisez plutôt:
la source
showInTabBar:
àshowFromTabBar:
. Notez également qu'il existe une méthode 'showFromToolbar:', en fonction du mobilier d'écran que vous avez en bas de l'écran. C'est, je pense, une meilleure réponse que la réponse acceptée.Voici le correctif, essayez ceci:
la source
Je pense qu'une combinaison de trois des réponses est la bonne façon de gérer cela:
c'est-à-dire, utilisez showFromTabBar (c'est pourquoi il existe) et vous n'avez pas besoin du parentViewController comme l'a souligné Nathan (en fait, self.parentViewController.tabBarController.tabBar renvoie nil pour moi.
la source
FYI - a eu le même problème avec la feuille d'actions de UIDocumentInteractionController pas à pas sur la barre d'onglets. Utilisé ce qui suit pour corriger.
la source
écrire du code simplifié
ça marche bien
la source