#1. Checklist
#2. Assignment
과제 세부 요구사항은 Notion에 별도 저장하였음.
Assignment 1. LEDBoard Project
- 적용사항
- 키보드 내려가도록 하는 방법 2가지 시도(UITextFieldDelegate, Did End On Exit)
- view touch 이후 isHidden을 구현한다.
Assignment 2. Netflix project 수정
- 적용사항
- 코드 리팩토링(옵셔널, 메서드, outletcollection)
#3. 회고
- Assignment 1. LEDBoard
- keyboard - 탭(동작)에 따른 반응들을 작성하는 것은 잘 익혀놓으면 여러 기능을 구현하는데 도움 될 것으로 생각되었다.
- 탭을 통해 textviewfield 외 다른 button 묶음의 뷰를 컨트롤 하는 게 쉽지 않았다. isHidden을 적용해서 뷰 묶음이 숨겨졌다, 보여졌다 하는 것을 어떤 값의 유무를 확인해서 적용하려고 했다. 그래서 하단의 코드를 1차적으로 적용했으나 구현이 안되었다.
- 사라지기만 하고 다시 탭했을 때, 등장하지 않았다. 그래서 if 구문 내 다시 드러나게 하려고 했으나 터치 동작이 발생하면 계속 true로 빠지게 되어 문제 해결이 어려웠다.
- 단순하게 터치하여 사라진 값이 반대의 값을 갖는 식으로 적용하는 것으로 문제 해결했다.(이것을 생각못해 3시간동안 Google을 헤엄친 나는 마린보이)
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch: UITouch? = touches.first
if touch?.view != self.textFieldView{
self.textFieldView.isHidden = true
}
}
self.textFieldView.isHidden = !(textFieldView.isHidden)
- Netflix Project
- 각 textField 마다 중복된 표현이 있었으나 이를 함수 작성시 받아야 할 정보를 파라미터로 처리 후에 필요한 내용만 호출하게 되면 보다 간편한 표현이 가능하다는 것을 알 수 있었다.
- 더불어 IBOutlet 역시 Outlet Collection을 통해 for문을 효과적으로 쓸 수 있다.
@IBOutlet var textFieldOutletCollection: [UITextField]!
func textFieldStyle(){
for textStyleItem in textFieldOutletCollection {
textStyleItem.layer.cornerRadius = 5.0
textStyleItem.layer.borderWidth = 1.5
textStyleItem.layer.borderColor = UIColor.lightGray.cgColor
textStyleItem.borderStyle = .line
textStyleItem.backgroundColor = .gray
textStyleItem.keyboardType = .default
}
}
- 반성: 과제 뿐 아니라 학습을 위한 여러 키워드가 있었다. 그러나 과제의 범위를 확인 후 생각보다 빠르게 적용하고, 학습을 하고자 하였다. 역시, 구현은 내 마음과 생각대로 되지 않는다. 한줄을 뽑아내기 위해 3시간을 헤엄쳤다. 심폐지구력의 상승. 건방지게 빨리 구현할 수 있다라는 착각하지 말고, 먼저 중요하다 여겨지는 개념을 학습 후 구현을 하는 쪽으로 습관을 들이자.