2014-11-18 12 views
15

Đây là lần đầu tiên tôi sử dụng Swift hoặc ứng dụng iPhone, vì vậy không cần phải nói rằng tôi không chắc chắn cách thực hiện nhiều việc tại thời điểm này.Swift UIDatePicker cho nhập trường văn bản - cách làm cho UIDatePicker biến mất?

Hiện tại tôi có bộ điều khiển chế độ xem với trường văn bản và nút. Tôi đã quản lý để tìm mã ví dụ để gần như hoàn thành những gì tôi cần. Tôi muốn làm như sau:

  1. Khi tôi nhấp vào trường văn bản có UIDatePicker xuất hiện trên màn hình.
  2. Đặt bộ chọn UIDate để chỉ hiển thị thời gian - không phải ngày.
  3. Đặt thời gian UIDatePicker đã chọn vào trường văn bản.
  4. Đặt UIDatePicker biến mất khi tôi nhấp vào nút.

1 đến 3 đang hoạt động. Nhưng tôi không thể tìm ra cách để UIDatePicker biến mất và vẫn quay lại màn hình nếu tôi nhấp lại vào trường văn bản.

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

Mã của bạn đã giúp tôi sắp xếp ra datepicker tôi .. cảm ơn! –

+1

MGann howd bạn làm cho nó để một khi lĩnh vực được nhấp vào bàn phím không hiển thị nhưng DatePicker nhờ – kareem

+0

Demo của DatePicker với ToolBar: https://iosdevcenters.blogspot.com/2016/03/ios9-uidatepicker-example-with. html –

Trả lời

5

Bạn gọi resignFirstResponder trên các lĩnh vực văn bản:

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

Ngoài ra, nó không phải là một ý tưởng tuyệt vời để có một phương pháp và một tài sản có cùng tên - không chắc chắn về quyền ưu tiên đó, nhưng rất có thể là nó có thể gây nhầm lẫn tại một số điểm.

+0

Xin chào Nate - Đó là nó! Cảm ơn đã giúp đỡ! Cũng xin cảm ơn cho nhận xét về tên của phương pháp và tài sản, tôi chắc chắn sẽ thay đổi điều đó. – MGann

0

Bạn cũng có thể chỉ cần tạo một lối thoát cho datePicker. @IBOutlet yếu var datePicker: UIPickerView!

sau đó trong chức năng của bạn

@IBAction func DoneButton(sender: UIButton) { 

    datePicker.hidden = true 
} 
+1

Bạn nhận ra rằng bộ chọn ngày là chế độ xem đầu vào cho bàn phím phải không? .... Loại bỏ phản hồi đầu tiên là cách thích hợp để loại bỏ chế độ xem bàn phím, không ẩn chế độ xem có chứa .... – TheCodingArt

Các vấn đề liên quan