2014-11-18 2 views
15

Это моя первая попытка в Swift или приложении для iPhone, поэтому, разумеется, я не уверен, как сделать много вещей на этом этапе.Swift UIDatePicker для ввода текстового поля - как заставить UIDatePicker исчезнуть?

Прямо сейчас у меня есть контроллер вида с текстовым полем и кнопкой. Мне удалось найти пример кода, чтобы почти выполнить то, что мне нужно. Я хотел бы сделать следующее:

  1. Когда я нажимаю на текстовое поле, появляется экран UIDatePicker.
  2. Установите UIDate picker только для отображения времени, а не даты.
  3. Поместите выбранное время UIDatePicker в текстовое поле.
  4. Удалите UIDatePicker, когда я нажимаю кнопку.

С 1 по 3 работает. Но я не могу понять, как заставить UIDatePicker уйти и все же вернуться на экран, если я снова щелкнул текстовое поле.

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

Ваш код помог мне разобраться в моей DatePicker .. спасибо! –

+1

MGann howd вы делаете это так, чтобы после щелчка по полю клавиатура не показывала, но DatePicker благодарит – kareem

+0

Демонстрация DatePicker с ToolBar: https://iosdevcenters.blogspot.com/2016/03/ios9-uidatepicker-example-with. html –

ответ

5

Вы называете resignFirstResponder на текстовое поле:

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

Кроме того, это не хорошая идея, чтобы иметь метод и свойство с тем же именем - не уверен старшинства там, но шансы в какой-то момент это может сбить с толку.

+0

Привет Нейт - Это было! Спасибо за помощь! Также спасибо за комментарий к имени метода и свойства, я обязательно его поменю. – MGann

0

Вы также можете просто создать розетку для datePicker. @IBOutlet слабая версия datePicker: UIPickerView!

затем в функции

@IBAction func DoneButton(sender: UIButton) { 

    datePicker.hidden = true 
} 
+1

Вы понимаете, что выбор даты - это входное представление для клавиатуры справа? .... Увольнение первого ответчика - это правильный способ избавиться от вида клавиатуры, а не скрывать содержащее представление .... – TheCodingArt

Смежные вопросы