2017-02-23 2 views
1

텍스트 필드의 값을 설정하는 데 사용하는 날짜 선택 도구가 있습니다. 그것은 제가 텍스트 필드를 두드리는 두 번째 시간에만 작동한다는 점을 제외하고는 훌륭하게 작동합니다. 즉, 처음으로 텍스트 필드를 탭하면 표준 키보드를 보여줍니다. 그런 다음 텍스트 입력란을 탭하여 다시 입력하면 날짜 표시기가 표시됩니다. 나는 그것의 다른 변이를 시도했다, 그러나 그것은 전혀 작동하지 않는다, 또는 나는 동일한 문제를 얻는다.날짜 선택기는 텍스트 필드를 클릭 한 후 작동합니다.

@IBAction func textFieldEditing(sender: UITextField) { 
    // ... 
    sender.inputView = datePickerView 
} 

당신은 후 텍스트 필드의 inputView까지 피커보기에 우리가 시작이 처음 설정되지 않습니다

class ExpDateTableViewCell: UITableViewCell, UITextFieldDelegate { 


@IBOutlet weak var textField: UITextField! 


@IBAction func textFieldEditing(sender: UITextField) { 

    let datePickerView:UIDatePicker! = UIDatePicker() 

    datePickerView.datePickerMode = UIDatePickerMode.date 

    sender.inputView = datePickerView 

    datePickerView.addTarget(self, action: #selector(ExpDateTableViewCell.datePickerValueChanged), for: UIControlEvents.valueChanged) 
} 

func datePickerValueChanged(sender:UIDatePicker) { 

    let dateFormatter = DateFormatter() 

    dateFormatter.dateStyle = DateFormatter.Style.medium 

    dateFormatter.timeStyle = DateFormatter.Style.none 
    textField.text = dateFormatter.string(from: sender.date) 


} 


override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 

override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 

} 
+0

당신이 텍스트 필드를 사용해야합니다 내부에이 코드를 추가

텍스트 필드

에 대한 inputview로 UIDatepickerview을? 라벨이나 버튼으로 바꿀 수 없습니까? – jo3birdtalk

답변

0

문제는이 코드입니다 : 나는 그것을 설정하는 방법입니다 편집. 따라서 우리는 여러분이 정확하게 기술 한 효과를 얻습니다 : second 시간 편집, 피커보기가 있습니다.

당신은 텍스트 필드의이 inputView 훨씬 이전에, 같은 awakeFromNib에서와 같이, 전에 사용자가 처음 텍스트 필드를 편집 할 수있는 기회를 설정해야합니다.

+0

고마워요, 매트. 그것은 많은 의미가 있습니다. 그러나 함수 외부에서 "datePickerView"를 참조 할 수있는 방법을 말해 줄 수 있습니까? –

+0

내부에서 선언되기 때문에 요점은 텍스트 필드의 'inputView'를 구성하는 코드를 _all_로 이동해야한다는 것입니다. 약간의 초기 시점. – matt

+0

아, 고마워! 내가 그것에 대해 생각할 때 매우 분명해. –

0

먼저 텍스트 필드 액션

@IBAction func textFieldEditing(sender: UITextField) { 
let datePickerView:UIDatePicker = UIDatePicker() 
datePickerView.datePickerMode = UIDatePickerMode.Date 
sender.inputView = datePickerView 
datePickerView.addTarget(self, action: #selector(ViewController.datePickerValueChanged), forControlEvents: UIControlEvents.ValueChanged) 

}