2014-11-18 11 views
15

To jest moja pierwsza próba w Swift lub aplikacji na iPhone'a, więc nie trzeba dodawać, że nie jestem pewien, jak robić wiele rzeczy w tym momencie.Swift UIDatePicker do wprowadzania pola tekstowego - jak sprawić, aby UIDatePicker zniknął?

Teraz mam kontroler widoku z polem tekstowym i przyciskiem. Udało mi się znaleźć przykładowy kod, aby prawie osiągnąć to, czego potrzebuję. Chciałbym wykonać następujące czynności:

  1. Po kliknięciu w polu tekstowym mają UIDatePicker się na ekranie.
  2. Ustaw selektor UIDate, aby wyświetlał tylko czas - a nie datę.
  3. Umieść wybrany czas UIDatePicker w polu tekstowym.
  4. Odejmij UIDatePicker po kliknięciu przycisku.

Działa 1 do 3. Ale nie mogę wymyślić, jak usunąć UIDatePicker i nadal wracać na ekran, jeśli kliknę ponownie w pole tekstowe.

import UIKit 

class ViewController: UIViewController { 


    @IBOutlet weak var dateField: UITextField! 

    @IBAction func dateField(sender: UITextField) { 

     var datePickerView : UIDatePicker = UIDatePicker() 
     datePickerView.datePickerMode = UIDatePickerMode.Time 
     sender.inputView = datePickerView 
     datePickerView.addTarget(self, action: Selector("handleDatePicker:"), forControlEvents: UIControlEvents.ValueChanged) 

    } 
    @IBAction func DoneButton(sender: UIButton) { 

     //How to make datepicker disappear??? 
    } 

    func handleDatePicker(sender: UIDatePicker) { 
     var timeFormatter = NSDateFormatter() 
     timeFormatter.dateStyle = .NoStyle 
     timeFormatter.timeStyle = .ShortStyle 
     dateField.text = timeFormatter.stringFromDate(sender.date) 
    } 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    } 

} 
+1

Kod pomogła mi uporządkować moje datepicker .. dzięki! –

+1

MGann howd robisz tak, że po kliknięciu pola klawiatura nie wyświetla się, ale DatePicker dziękuje – kareem

+0

Demo of DatePicker z ToolBar: https://iosdevcenters.blogspot.com/2016/03/ios9-uidatepicker-example-with. html –

Odpowiedz

5

zadzwonić resignFirstResponder na pola tekstowego:

@IBAction func DoneButton(sender: UIButton) { 
    dateField.resignFirstResponder() 
} 

Ponadto, nie jest to świetny pomysł, aby mieć metodę i właściwość o tej samej nazwie - nie wiesz o pierwszeństwa tam, ale są szanse może to być mylące w pewnym momencie.

+0

Cześć Nate - To było to! Dzięki za pomoc! Dziękuję również za komentarz na temat nazwy metody i własności, z pewnością to zmienię. – MGann

0

Można również po prostu utworzyć gniazdko dla elementu datePicker. @IBOutlet weak var datePicker: UIPickerView!

następnie w funkcji

@IBAction func DoneButton(sender: UIButton) { 

    datePicker.hidden = true 
} 
+1

Zdajesz sobie sprawę, że selektor dat jest widokiem wejściowym dla klawiatury prawej? ... Odrzucanie pierwszej odpowiedzi to właściwy sposób na pozbycie się widoku klawiatury, a nie ukrywanie widoku zawierającego .... – TheCodingArt

Powiązane problemy