개발/Swift

[Swift] UIResponder 대략 알아가기

덤벨로퍼 2021. 12. 1. 18:04

uiresponder 는 앱 이벤트 처리 백본을 구성한다?

무슨말인지 모르겠고 일단 이벤트에 대한 응답 처리를 위한 클래스임

UIApplication UIViewcontroller UIView 는 모두 리스폰더인데 (상위 클래스가 UIResponder임)

이벤트가 발생하면 앱의 리스폰더 객체에 전달함 (vc , view에 전달함)

터치, 모션 원격 등 이벤트를 처리하려면 리스폰더(vc,view) 가 해당 메소드를 오버라이드 하면댐

touchesBegan(_:with:) 등등...

만약 주어진 리스폰더가 이벤트를 처리하지 않는 경우

리스폰더 체인의 다음 이벤트로 해당 이벤트를 전달한다

→ 앱이 이벤트를 받으면 그 이벤트를 처리할 대상을 찾으려고 계속 전달 과정을 거침

→ 리스폰더가 처리 하지 않으면 (리스폰더 체인에 있는)다음 리스폰더로 이벤트를 전달함

리스폰더 체인은 쉽게 가장 하위 view → 상위 view → 더 상위 view → viewController → .... → window

이순서대로 있다고 보면된다. 하위에서 처리안하면 위로 타고타고 올라가 window까지 간다는말임

리스폰더는 리스폰더 체인을 관리하는데 그 관리하는 메소드중 이런것들 이 있다

becomeFirstResponder()
resignFirstResponder()

textField의 경우 (얘도 리스폰더임) firstResponder가 되는 순간 키보드가 튀어나옴

그리고 FirstResponder 가 아니면 키포드를 꺼버린다.

그래서 becomeFirstResponde() 를 하면 키보드가 나오고 resignFirstResponder()을 하면 꺼진다.