1. Responder Chain, UI responder
Responder: 이벤트를 핸들링하고 반응하는 객체 -> UIApplication, UIView, UIViewController가 상속함
ResponderChain: responder 객체들이 이벤트를 핸들링할 책임을 다른 객체에게 넘길 수 있도록 하는것.
해당 이벤트를 누군가가 처리할 때까지 계속 다른 객체들한테 넘기는 과정
- UIKit은 이벤트 타입에 따라 가장 적합한 responder를 first responder로 하여 전달함
- 만약 UITextField가 이벤트를 처리하지 않았다면 상위 뷰인 UIView로, UIView도 처리하지 못한다면 UIViewController로, 이 친구도 처리하지 못한다면 UIWindow로 이런식으로 넘어감
2. becomeFirstResponder() / resignFirstResponder()
- becomeFirstResponder: 가장 첫번째로 반응할 responder 지정 -> UITextField를 first repsponder로 지정하면 키보드가 바로 올라옴
- resignFirstResponder: 가장 첫번째로 반응할 responder 역할 제거 -> UITextField가 first responder로 되어있으면 어떠한 이벤트가 오든 다 textfield가 처리하기 때문에 할일을 다 마쳤으면 반드시 resign을 통해 사임시켜주어야함
3. translatesAutoresizingMaskIntoConstraints = false
코드로 constraint를 잡을 때 이 오류가 뜨면서 레이아웃이 잡히지 않는 이슈가 있으면, translatesAutoresizingMaskIntoConstraints = false를 주면 된다고 하는데, 이 오류가 왜 뜨고 이 설정이 왜 필요한지 궁금해서 찾아봤다.
사실 그냥 코드로 constraint 잡는 뷰가 있으면 이 속성을 주고 시작하면 된다.
https://zeddios.tistory.com/474
정리해보면 translatesAutoresizingMaskIntoConstraints = true로 하면, 시스템은 autoresizingmask를 사용해서 view의 크기와 위치를 완전히 지정하기 때문에 constraint를 추가적으로 줄 수 없게된다.
그런데 스토리보드에 constraint를 주게 되면 이 값이 원래 false로 되어있는데, 코드로 constraint를 짤 때 이 속성을 반드시 false를 주어야 우리가 직접 constraint를 추가할 수 있는것이다!
'📝 기록 > 오늘 배우거나 깨달은 것들 🍀' 카테고리의 다른 글
230720 TIL (0) | 2023.07.20 |
---|---|
230612 TIL (0) | 2023.06.12 |
230601 TIL (0) | 2023.06.01 |
230520 TIL (0) | 2023.05.20 |
230514 TIL (0) | 2023.05.14 |