iOS/UIKit

[IOS] datePicker() 를 TextField에서 사용과 TextField에 이벤트 추가

유훈 | Yuhun 2022. 2. 7. 21:01
반응형

스토리보드에서 datePicker Object를 사용하면 화면을 넓게 차지합니다.

그래서 TextField를 클릭하면 datePicker가 나오도록 해보겠습니다.

// datePicker 객체 생성
private let datePicker = UIDatePicker()

// datePicker를 원하는 유형으로 설정
// 고를 데이터
self.datePicker.datePickerMode = .date
// 선택 방식
self.datePicker.preferredDatePickerStyle = .wheels
// 언어 설정
self.datePicker.locale = Locale(identifier: "Korean")



// 이 코드로 textField에 datePicker를 넣을수 있다.
// dateTextField는 textField의 IBOulet
self.dateTextField.inputView = self.datePicker

 

TextField에 이벤트(Target) 추가

다음과 같은 방법으로 UI 요소의 값이 변경되었을 때 일어날 동작을 지정해줄 수 있습니다.

// datePocker에서 valueChanged가 일어나면 '원하는 함수가 실행'
self.datePicker.addTarget(self, action: #selector(원하는함수이름(_ :)), for: .valueChanged)

// 함수는 @objc로 작성
@objc private func datePickerValueDidChange(_ datePicker: UIDatePicker) -> Void {
	// 코드 작성
}
// textField의 값 수정시 원하는 함수 실행
self.someTextField.addTarget(self, action: #selector(원하는함수(_:)), for: .editingChanged)

@objc private func 함수이름(_ textField: UITextField) {
	// 실행될 코드 작성
}

 

수동으로 이벤트 보내기

사용자가 이벤트를 발생시키는 것 외에도 특정 동작을 했을 때 #selector에 지정된 함수를 실행시키고 싶을 때 사용 가능합니다.

// 위의 예시의 someTextField에 .editingChanged를 발생시켜보겠습니다.
self.someTextField.sendActions(for: .editingChanged)

이렇게 지정해주면 .editingChanged가 일어난 것과 같은 역할을 하게 됩니다.

반응형