2016-12-01 53 views
1

使用最新的Xcode 8.2 Beta和Swift 3.使用文本框顯示DatePicker的一些Swift示例以顯示日期並使其工作。我的問題是,當你點擊日期輸入文本框時,鍵盤會首先出現。如果我在文本字段中添加任何內容並在其他字段中執行一些更多的返回操作,DatePicker就會開始工作(DatePicker在您點擊該字段並且可以輸入日期時出現)。那麼當點擊日期字段時,如何才能獲取DatePicker?我發送的事件是「退出時沒有結束」。放入大量的resigFirstResponder來查看我是否可以敲下鍵盤,但它們似乎沒有太大影響。我用當前日期初始化文本框,但我很確定它在沒有初始化的情況下工作。我有兩個文本框/ DatePickers。這是我對他們的一個代碼:鍵盤帶有日期選取器

func datePickerChangedSell(sender: UIDatePicker) { 

    resignFirstResponder() 
    let formatter = DateFormatter() 
    formatter.dateStyle = .medium 
    sellDateDisp.text = formatter.string(from: sender.date) 

    resignFirstResponder() 


} 

    @IBAction func sellDateAction(_ sender: UITextField) { 
    let datePicker:UIDatePicker = UIDatePicker() 
    datePicker.datePickerMode = UIDatePickerMode.date 
    sender.inputView = datePicker 
    resignFirstResponder() 
    datePicker.addTarget(self, action: #selector(datePickerChangedSell(sender:)), for: .valueChanged) 
    resignFirstResponder() 
} 

回答

1

什麼原因導致日期選擇器,當您激活文本字段行sender.inputView = datePicker顯示。你應該在viewDidLoad中做到這一點,而不是在IBaction

編輯文本字段,交換到另一個字段,然後交換回來的原因必須是您調用的是sellDataAction方法,該方法指定文本字段的inputView

+0

感謝您的幫助。試圖將sender.InputView移動到viewDidLoad,並得到了有關發件人的未解決的引用。試圖在viewDidLoad的parens中添加「_ sender:UITextField」,並且它說了一些關於方法超類沒有覆蓋的內容。所以會嘗試更好地理解你的建議。 – flashgordon

+0

您需要在管理它的視圖控制器中爲您的文本視圖創建一個插座。打開Storyboard,然後在附件編輯器中打開視圖控制器的源文件。控制 - 從文本視圖拖動到您的源文件,並給文本視圖的名稱。然後在調用中設置文本視圖的'inputView' –

+0

Duncan的名稱,謝謝我試試看。我想我會先嚐試一個單獨的版本。我在這裏有很多對象,如果你創建一個連接並且不起作用,我發現連接難以撤消。得到它的權利,然後實施我的產品構建。 – flashgordon

0

鄧肯,謝謝你的幫助,我想通了,你讓我在那裏。我試圖將你的答案標記爲答案,但它不會讓我。我的問題是我創建了「編輯沒完」的操作,而不是「編輯沒有開始」。當我刪除教科書並重新添加動作時,DatePicker在沒有文本鍵盤的情況下第一次出現。一個問題,是否有一種方法可以改變編輯完成編輯開始?我看到帶箭頭的圓圈,它顯示了所有的編輯選項,但它似乎沒有讓你改變它。好像我不得不放棄並重新添加文本框。另一個參考點。它不會讓我直接在viewDidLoad方法內連接文本框。它堅持說我把它連接到別的地方。

+0

一個有趣的副作用。使用編輯完成後,即使當我點擊日期時,它也會保存我爲該會話輸入的最後日期。當我去編輯開始時,它會在我下次點擊該日期教科書時顯示我的初始值。 – flashgordon

+0

另外編輯Did End是默認值,所以其他人可能會遇到這個問題。 – flashgordon