Zeigen UIPickerView wie eine Tastatur, ohne UITextField
Ich bin auf der Suche nach einem Weg, um eine UIPickerView
wenn der Benutzer tippt auf ein UIBarButtonItem
. Stellen Sie sich einen filter für die Tabelle die Ergebnisse einsehen.
Ich weiß, ich könnte mit einem UITextField
inputView, aber dies wäre nicht der Fall, -- ich habe, ist ein UIBarButtonItem
und ein UITableView
.
Ich habe gesehen, in einem UIActionSheet, aber es nicht natürlich Aussehen, speziell wenn es animieren zu zeigen.
Wäre die Animation der UIView
an-und ausschalten, den Bildschirm manuell die einzige option?
Die app ist iOS 6+ und iPhone nur, damit ich nicht halten müssen, um die Kompatibilität mit anderen Versionen/Idiome.
- Verwenden Sie nicht eine
UIActionSheet
. Sie sollen nicht Ihre eigene Untersichten auf eine Aktion Blatt. So viele apps sind zu brechen, wenn Apple änderungen der Benutzeroberfläche für einen action-Blatt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte es nicht sein, Ihre einzige option, aber die Animation der UIPickerView sollte relativ einfach sein für Sie zu tun. Fügen Sie die picker-Ansicht, damit es angezeigt, den unteren Rand des Bildschirms. Wenn es Zeit ist, zu animieren, in:
Und wenn es Zeit, es zu verbergen:
Befestigen UIPickerView als inputView eine 0-size-UITextField, das Sie Hinzugefügt haben, um Ihre Ansicht.
Eine bessere option ist, immer noch zu verwenden die
UITextField
. Sie nicht haben, um tatsächlich zeigen Sie auf dem Bildschirm. Setzen Sie ihn einfach in eine 0x0UIView
so dass es nicht sichtbar ist, legen Sie esinputView
zu IhremUIPickerView
- und call -becomeFirstResponder
auf Sie zu zeigen, die Farbauswahl und dieresignFirstResponder
um es zu verbergen.Ist es bequem zu haben
UIView
Unterklasse implementiert, dass alle, die zusammen mitUIPickerViewDelegate
undUIPickerViewDataSource
Methoden.Der sauberste Weg, zumindest für mich, und für Swift4 + Autolayout-Lösung, ohne
UITextField
ist das hinzufügen einerUIView
als ein container derUIPickerView
und einUIToolbar
für die top-views/- Tasten.Dann schaltet die Einpresstiefe/offset der container-Ansicht mit Animationen, wenn Sie wollen, zum ausblenden und einblenden der picker.
EIGENSCHAFTEN
Benutze ich
SnapKit
layout meine Ansichten programmatisch. Sie können dietimePicker
's Grenzen.Größe als Referenz für Ihr layout.UMSETZUNG
In viewDidLoad()
Einbettung top views
Und das Ergebnis sieht wie folgt aus:
viewWillAppear()
.Ging ich mit borisgolovnev's Vorschlag von einer unsichtbaren
UITextField
und kam mit der folgenden Swift 2.3 Umsetzung:PickerViewPresenter können dann bequem als solches verwendet werden:
Hoffe jemand findet das nützlich =)