iPhone Désactivation UIActionSheet boutons
Je veux désactiver les boutons dans le UIAction de bilan et de leur permettre, après une certaine condition est vraie. Comment puis-je y parvenir? Des idées?
Je sais que c'est dur de changer quelqu'un d'avis, mais êtes-vous sûr que vous voulez vraiment faire cela de cette façon? Peut-être au contraire, vous voulez juste vous montrer la fiche action sans les boutons sont désactivés, et quand la condition est vraie, montrer l'autre à la place (en cachant les autres si nécessaire)
Voir une autre réponse que j'ai des agrégats à partir de nombreuses sources dans ce répondre
Voir une autre réponse que j'ai des agrégats à partir de nombreuses sources dans ce répondre
OriginalL'auteur shrads | 2009-04-13
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé que craig réponse n'a pas fonctionné pour moi (sur OS 3.1). Après un peu de creuser autour, j'ai découvert que le sous-vues de
UIActionSheet
sont effectivement d'une classe nonUIThreePartButton
De toute façon, cela fonctionne pour moi (mis en œuvre dans le cadre de la
UIActionSheetDelegete
méthode)Espère que ça aide quelqu'un d'autre, bien que je serais echo Ed Marty question de savoir si vous seriez mieux l'omission de ces boutons à partir de la feuille d'action au total au lieu de le faire. Comme toujours lors de l'utilisation de fonctions non documentées, il y a un risque de app store rejet, bien que ce code est écrit à l'échec normalement si Apple ne chnage l'Api de nouveau dans un futur OS de presse.
description
pour comparer les classes. Bonne façon est d'utiliser des[view isKindOfClass:NSClassFromString(@"UIThreePartButton")];
À l'aide des sans-papiers des classes comme c'est un moyen sûr d'obtenir rejetée lors de la soumission à l'App Store.
OriginalL'auteur cidered
Est là une circonstance qui peut changer, alors que la feuille d'action est ouvert, ce qui pourrait provoquer le bouton pour l'activation? Si non, je pense que la meilleure approche est de modifier les boutons de la feuille s'affiche en fonction de votre état de santé.
Sinon, la seule manière de ce traitement est d'itérer sur la feuille de sous-vues, comme Craig dit, et de regarder pour la
UIButton
objets. Je serais prudent sur l'utilisation du bouton du titre, bien que, parce que le titre pourrait (et devrait!) être localisées pour différentes langues. Les comparaisons sont donc contre le titre ne sont pas tous fiables. Puisque vous n'avez pas à créer le bouton, vous ne savez pas vraiment ce que l'tag
ouaction
de chaque bouton doit être, non plus, donc c'est un peu difficile, trop.Sans doute, les boutons apparaissent dans la
subviews
tableau dans l'ordre que vous avez spécifié à l'UIActionSheet
, mais puisque ce n'est pas documenté, il n'y a aucune garantie qu'ils apparaissent dans cet ordre, ou qu'ils continueront à apparaître dans cet ordre dans les futures versions du Cocoa Touch SDK. À cause de cela, j'avais préoccupent principalement d'être rejeté à partir de l'App Store pour les sans-papiers à l'aide de la fonctionnalité.Vrai, ce n'est pas la même chose que l'API privée, mais il est privé, en ce sens qu'elle est basée sur l'expérience, pas de documentation. Je recommanderais très vivement contre elle. Je ne suis pas convaincu que Apple ne serait pas rejeter l'accord leur donne une main libre en rejetant les applications pour n'importe quelle raison.
OriginalL'auteur Alex
UIActionSheet n'est pas prévu pour la personnalisation. Il doit afficher ensemble des options disponibles. Il ne faut pas changer le bouton de la disponibilité tout en haut.
Seulement supprimer les boutons, ou utiliser les afficher à la place
OriginalL'auteur vaddieg
C'est probablement un peu en retard. Mais, de la façon que j'ai trouvé est de créer UIButton(s) et de les ajouter
pour UIActionSheet sous-vue. Ces boutons sont placés sur le dessus et couvrir complètement le défaut UIActionSheet bouton(s) à remplacer. Lorsque le UIButton est placé sur la valeur par défaut UIActionSheet bouton, son UIResponder l'emporte sur UIActionSheet bouton UIResponder. Donc, en faisant de sorte que vous pouvez désactiver et activer ces boutons comme vous le souhaitez, n'importe où dans vous UIViewController logique. Cela peut être une alternative à l'accès privé méthodes pour le kit de développement (comme ci-dessus - UIThreePartButton) et apple pourrait rejeter votre application. Je crois que cela fait suite à l'Apple lignes directrices.
c'est à dire le programme d'Installation UIButtons pour activer /désactiver après que certaines conditions se produisent.
REMARQUE: Cela a fonctionné parfaitement dans une précédente application que j'ai construit.
OriginalL'auteur mrapplehead
Si vous ajoutez l'affichage de la feuille d'action, le point de vue habitude de recevoir tout événement.
Vous avez besoin de la vue à la superview de la fiche action.
Voir ci-dessous comment j'ai ajouté un bouton avec touche jusqu'à l'événement:
}
OriginalL'auteur Shaikh Sonny Aman
J'ai fait face à un problème similaire quand j'ai eu une fiche action qui change en fonction de certaines conditions. J'ai omis les choix qui ne sont pas applicables à partir de la feuille d'action tout mais dans certains cas je me retrouve avec une feuille d'action avec juste un choix. Cela semble un peu ridicule, puisque je pouvais activer ce choix immédiat sans l'affichage de la feuille.
Cependant, je tiens également aux utilisateurs d'apprendre qu'en cliquant sur un bouton de certaines sur l'écran donne une liste de choix qu'ils peuvent choisir. C'est pourquoi je veux afficher la feuille d'action que dans les cas où il n'a qu'un seul choix. J'ai pensé à la désactivation de la non-applicable choix au lieu de l'omission de la page, mais qui ne se sent pas bien, soit.
Mon cas est lié à avoir un utilisateur icône personnalisé dans un barre en bas et en appuyant sur il présente les choix suivants:
OriginalL'auteur Mayoneez
Vous pouvez essayer [actionSheet valueForKey:@"_buttons"] dans votre UIActionSheetDelegate comme suit:
Nous espérons que cette habitude de changer dans les futures versions du sdk.
OriginalL'auteur richy