Messagebox.Spectacle et DialogResult équivalent dans MonoTouch
J'ai un Oui/Non dialogue à partir de UIAlertView avec deux boutons. Je voudrais dans ma méthode pour implémenter la logique similaire à ceci:
if(messagebox.Show() == DialogResult.OK)
Le truc c'est que si j'appelle UIAlertView.Show (), le processus continue. Mais j'ai besoin d'attendre le résultat de l'interaction de l'utilisateur et renvoie true ou false depanding en cliquant sur le deuxième bouton. Est-ce possible dans MonoTouch?
OriginalL'auteur Scarlaxx | 2011-01-06
Vous devez vous connecter pour publier un commentaire.
Pour ce faire, ce que vous pouvez faire est d'exécuter l'mainloop manuellement. Je n'ai pas réussi à arrêter le mainloop directement, j'ai donc au lieu d'exécuter le mainloop pendant 0,5 secondes et attendre jusqu'à ce que l'utilisateur répond.
La fonction suivante montre comment on pourrait mettre en œuvre un modal de la requête avec la méthode ci dessus:
Ai-je raison de dire que MonoDevelop ne dispose pas actuellement d'identifier le type buttonArgs comme UIButtonArgs dans ce cas (à l'intérieur de la Lambda?) Je vois que je voulais juste m'en assurer. (Pour l'auto-complétion. Pas de voyant indiquant ButtonIndex, semble être le traiter comme un Objet.)
J'ai eu cette erreur en faisant cela sur MonoDevelop 3.1.1: [ERREUR] FATAL EXCEPTION non GÉRÉE: MonoTouch.UIKit.UIKitThreadAccessException: UIKit erreur de Cohérence: vous appelez un UIKit méthode qui ne peut être invoqué à partir du thread d'INTERFACE utilisateur.
à l'aide de
async/await
est beaucoup plus facile que d'utiliserNSRunLoop
prashantvc.com/modal-uialertview-ios-7OriginalL'auteur miguel.de.icaza
Basé sur l'Miguel codé, ici, est une pratique de remplacement de la norme MessageBox:
OriginalL'auteur Ales Suchac
Je pense que cette approche en utilisant async/await est beaucoup mieux, et ne souffre pas de gel de l'application lors de la rotation de l'appareil, ou lorsque le défilement automatique de la gêne et vous laisse coincé dans le RunUntil boucle, sans jamais la possibilité de cliquer sur un bouton (au moins ces problèmes sont faciles à reproduire sur iOS7).
Modal UIAlertView
OriginalL'auteur danmiser
MonoTouch (iOS) n'ont pas de boîtes de dialogue Modales, la raison en est des boîtes de dialogue Modales (en attente) peuvent provoquer des blocages afin de cadres comme Silverlight, Flex/Flash, iOS ne permettent pas à ces boîtes de dialogue.
La seule façon que vous pouvez travailler avec elle est, vous devez passer un délégué à UIAlertView qui sera appelée quand elle a été couronnée de succès. Je ne sais pas la syntaxe exacte de UIAlertView mais vous devriez voir la documentation sur UIAlertView, il doit y avoir un moyen de passer d'une classe implémentant UIAlertViewDelegate protocole/interface. Qui va avoir une méthode qui sera appelée lors de l'achèvement de la boîte de dialogue.
qui peut être utilisé par Apple en interne, mais si elles permettent à des boîtes de dialogue modales, il va créer des problèmes.
OriginalL'auteur Akash Kava
Combiné danmiser et Ales réponses
OriginalL'auteur Patrick Xiong
Voici une autre mise à jour, sur la base des contributions par Miguel, Ales, danmister et Patrick.
Depuis la sortie de iOS 11, en particulier la version 11.1.2 (j'ai d'abord remarqué sur celui-ci), l'original de la solution posté par moi (Ales) est devenu peu fiable, a commencé à geler au hasard. Cela on utilise explicitement invoqué NSRunLoop.Actuel.RunUntil().
J'ai donc mis à jour ma classe d'origine pour offrir à la fois de synchronisation et de méthodes asynchrones et quelques autres modifications afin de libérer de la mémoire immédiatement après n'importe quel bouton est cliqué, a également ajouté le code qui permet d'aligner le texte à gauche si Windows CRLF les sauts de ligne sont détectés.
Espaces de noms:
Code:
OriginalL'auteur Ales Suchac