📝 기록/오늘 배우거나 깨달은 것들 🍀

230630 TIL

dev_zoe 2023. 6. 30. 17:26
반응형

1. Responder Chain, UI responder

 

https://seizze.github.io/2019/11/26/iOS%EC%9D%98-Responder%EC%99%80-Responder-Chain-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0.html

 

iOS의 Responder와 Responder Chain 이해하기

UIKit과 관련된 애플 문서를 볼 때 빈번하게 등장하는 Reponder Chain에 관련한 내용을 정리합니다. 여러 애플 문서를 참고하였으며, 포스트의 맨 아래 References에서 확인할 수 있습니다.

seizze.github.io

https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/using_responders_and_the_responder_chain_to_handle_events

 

Using responders and the responder chain to handle events | Apple Developer Documentation

Learn how to handle events that propagate through your app.

developer.apple.com

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

 

iOS ) translatesAutoresizingMaskIntoConstraints

안녕하세요 :) Zedd입니다.오늘은...! translatesAutoresizingMaskIntoConstraints..!을 정확히 알아보는 공부~.~ translatesAutoresizingMaskIntoConstraints 사실 엄청 많이 보셨을 코드에요. self.view.translatesAutoresizingMaskIntoC

zeddios.tistory.com

정리해보면 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