2012-04-10 2 views
0

Mögliche Duplizieren:
MonoTouch.Dialog: Dismissing keyboard by touching anywhere in DialogViewControllerKann die Tastatur durch Berühren von außerhalb der Zelle in MonoTouch.Dialog beendet werden?

Ich bemerkte, dass, wenn sie außerhalb der Tabellenzelle berühren (was ich nehme an ist der ‚Abschnitt‘), wird die touchesBegan Methode nicht so ich gecallt kann nicht EndEditing oder ResignFirstReponder aufrufen.

Ich erstelle ein mehrzeiliges Eingabeelement; Aus diesem Grund geht der Return-Schlüssel zu einer neuen Zeile anstatt "zurück". Dies ist das beabsichtigte Verhalten. Allerdings habe ich keine Möglichkeit, die Tastatur dann zu verwerfen.

Ich bemerkte in den Einstellungen für das Menü auf dem iPhone (Allgemein-> Tastatur-> Shortcuts) oder bei der Eingabe von Anmeldeinformationen, dass berühren im äußeren Bereich nicht den Responder. Bedeutet dies, dass dies eine Einschränkung von iOS als Ganzes darstellt (oder Apple in diesen Fällen einfach nicht passt)?

Gibt es trotzdem etwas zu tun?

Es ist, was ich sammle, eine identische Frage hier aber niemand kam mit einer gültigen Antwort auf:
Can I dismiss the iPhone keyboard by touching the background of DialogViewController (MonoTouch.Dialog)?

Vielleicht in einem Jahr und ein halb jemand hat es gelöst?

+0

Können Sie die Schaltfläche "Weiter" stattdessen zeigen ... wie wenn man in einem Webformular in Safari ist Füllung? – xanadont

+0

Ich habe es nicht versucht. Ich wusste nicht, ob die Next/Done-Taste eine andere Funktion als die Enter-Taste haben könnte. – valdetero

Antwort

1

miguel.de.icaza hat diese Frage auf einem anderen Thread beantwortet: https://stackoverflow.com/a/10864640/1134836.

Seine Lösung:

var tap = new UITapGestureRecognizer(); 
    tap.AddTarget (() =>{ 
     dvc.View.EndEditing (true); 
    }); 
    dvc.View.AddGestureRecognizer (tap); 
+3

Sie müssen auch hinzufügen dvc.CancelsTouchesInView = false; Andernfalls werden alle anderen Klicks auf der Seite abgebrochen. – benpage

0

Ich glaube, Sie haben 2 Möglichkeiten:

  • Setzen Sie eine Schaltfläche „Fertig“ irgendwo
  • das Touch-Ereignis auf dem Hintergrund Ihrer Ansicht

ich die ersten denken zu entlassen Schalen Option ist besser, da es Safari ist.

Sie können eine Symbolleiste an der Oberseite der Tastatur anhängen, um zu simulieren, was Safari mit InputAccessoryView macht. Hier ist ein Beispiel dafür in Obj-C (sollte einfach zu portieren sein): http://gabriel-tips.blogspot.com/2011/05/input-accessory-view-how-to-add-extra.html

Es funktioniert möglicherweise nicht für Ihr Layout, jedoch, wenn Bildschirm Immobilien eng ist. Gehen Sie in diesem Fall mit Option # 2.