Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 기존 앱
- 스크롤 탭
- DataBinding
- DevelopmentRegion
- convert base64
- scrolling tab
- development language
- swift #swift keychain #keychain 사용법
- 상단 탭바
- 개발자 면접
- ios
- UIPresentationController
- Swift Package Manager
- oberve url
- detect url
- transformation.map
- Android
- Tuist
- base64 변환
- notifychanged
- SwiftUI
- List
- UIViewControllerTransitioningDelegate
- url 추적
- swift
- pod install
- url 관찰
- ViewBuilder
- Side Menu
- GeometryReader
Archives
- Today
- Total
버그 잡이
iOS - UIResponder, Responder Chain 알아보기 본문
UIResponder
UIResponder는 이벤트에 반응하고 이를 핸들링 할 수 있는 객체입니다.
위의 상속 구조를 보면 알 수 있듯이, UIView, UIViewController는 UIResponder를 상속하고 있습니다.
이벤트가 발생하면 UIKit은 리스폰더 객체에 이벤트를 넘깁니다.
특정 이벤트를 처리하기 위해서는 해당 이벤트에 대응하는 메서드들을 오버라이드하여 구현할 수 있습니다.
*toucheBegan(), touchedMoved(), touchedEnded(), touchedCancelled() 메서드가 있습니다.
class ViewController: UIViewController {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touched")
}
}
Responder Chain
responder 객체는 이벤트를 직접 처리하지않고 이벤트를 다른 객체에게 넘길 수 있습니다.
Responder Chain 에 따라 처리되지 않은 이벤트는 다른 responder 객체로 넘겨집니다.
위 사진처럼 미리 정해진 규칙에 따라 이벤트를 넘길 객체를 결정합니다.
Responder Chain을 관리하는 메서드들이 있습니다.
사용해봤던 메서드들이 있네요.
- becomeFirstResponder()
- resignFirstResponder()
위 메서드는 화면 진입시 키패드를 올리고 싶을때 사용할 수 있습니다.
왜냐면 UITextField 객체는 최초 리스폰더가 될 경우 키패드를 올립니다.
즉, 화면 진입시 textfield를 .becomeFirstResponder()로 설정하면 키패드가 올라오는 것입니다.
(원리를 모르고 사용했었는데, reponderChain을 활용한 메서드였네요.)
세 줄 요약
- responder 객체는 이벤트를 핸들링 할 수 있는 객체이다.
- reponder 객체는 이벤트를 처리하지 않고 다른 객체에 처리를 넘길 수 있는데 이 이동은 reponder chain 객체에 의해서 결정된다.
- 관련 메서드를 활용하면 responder chain을 관리할 수 있다. (ex_ 키패드 올리기)
*참고
https://zeddios.tistory.com/538
반응형
'IOS' 카테고리의 다른 글
tableView.reloadData() 이후 스크롤이 튀는 현상 해결방법 #automaticDimension #estimatedRowHeight (0) | 2020.12.07 |
---|---|
XCode에서 SVG 파일 사용하기 #PDF vs SVG (0) | 2020.11.12 |
iOS animation 빠르게 살펴보기. #animate() #PropertyAnimation (0) | 2020.09.05 |
iOS - Custom popup (커스텀 팝업창 만들기) + animation (0) | 2020.08.27 |
iOS - 네트워크 통신 (URLSession) (0) | 2020.08.12 |
Comments