UIDatePicker
stotyboard 에 DatePicker 와 Label 올려두기
DateFormatter 를 사용하여 날짜를 Label 에 나타내기
let dateFormatter: DateFormatter = {
let formatter: DateFormatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd hh:mm:ss"
// formatter.dateStyle = .medium
// formatter.timeStyle = .medium
return formatter
}()
1. format 을 직접 지정하려면 .dateFormat 을 변경해준다.
ex) "yyyy/MM/dd"
2. 기본 스타일: .dateStyle, .timeStyle
애플의 개발자 문서를 보면DateFormatter는 NSDate의 오브젝트라고한다.
나라별로 위치를 설정해서 시간을 나타낼 수도 있는듯
라벨에 날짜를 나타내기위해서 @IBAction func datePickerValueChanged 함수를 만들고 UIDatePicker를 sender로 받아온다.
String 변수를 만들어서 만들어둔 dateFormatter 에서 String을 가져온다.
만든 String 변수를 UILabel 변수에 넣으면 완성 !
시간은 설정 안해뒀는데 Format에서 시간을 지우면된다.
Date Picker 스타일이 여러가지 있더라카더라 ㅇㅅㅇ
UITapGestureRecognizer
textField 에서 키보드가 올라오면 화면을 탭해서 키보드를 내리게하는 제스쳐를 추가해보자
3가지 방법으로 할 수 있다.
1. storyboard 에서 제스쳐 연결하기
2. Target-Action 패턴 사용하기
3. Delegate 패턴 사용하기
delegate 패턴만 적어보면
UIGestureRecognizerDelegate 를 상속시키고
UITapGestureRecognizer 변수를 만들어서 delegate를 self로 설정한다.
UITapGestureRecognizer 변수를 view에다가 addGestureRecognizer로 추가한다.
override func viewDidLoad() {
self.datePicker.addTarget(self, action: #selector(self.datePickerValueChanged(_:)), for: UIControl.Event.valueChanged)
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
self.view.endEditing(true)
return true
}
delegate 디자인패턴은 더 다양한 상황에 맞는 동작들을 제어할 수 있고,
target-action 패턴은 단순한 상황에서 사용하기 편하다는 점!
'iOS > STUDY' 카테고리의 다른 글
[iOS] Singleton (3) | 2021.03.12 |
---|---|
[iOS] UITextField 암호화 시 Strong Password (0) | 2021.03.08 |
[iOS] Delegate (4) | 2021.02.09 |
[iOS] View transition (0) | 2021.02.05 |
[iOS] modal 생성하기 (storyboard) (0) | 2021.02.05 |