iOS/설명
[iOS] UIControl
Sky Titan
2021. 4. 25. 18:41
728x90
Apple Developer Documentation
developer.apple.com
UIControl
- user와의 상호작용에 대한 반응과 특정 액션을 수행할 수 있게하는 기본 클래스이다.
- UIView를 상속받고 있다.
- 예를 들어, UIButton, Slider처럼 사용자와 상호작용하는 것들이 UIControl을 상속받는 컴포넌트들이다.
- 사용자와의 상호작용을 알리기 위해서 target-Action 메커니즘을 사용한다.
The Target-Action Mechanism
- 특정한 Control Event에 대해 특정한 action을 수행하도록 정의하는 메커니즘이다.
- addTaget(_:action:for:) 이라는 메서드를 통해서 특정한 event에 대해 수행할 action 메서드를 추가할 수 있다.
- sendAction() 이라는 메서드를 호출하여 코드로 특정한 action의 발생을 유도해 action메서드를 실행할 수 있다.
UIControl.Event
- 컨트롤에 의해 발생 가능한 event 상수값들
| Event | description |
| .touchDown | 컨트롤을 터치할 시 발생 이벤트 |
| .touchDownRepeat | 컨트롤을 1회 이상 반복적으로 터치할 시 발생 이벤트 |
| .touchDragInside | 컨트롤 bound 내에서 드래그할 때 발생 이벤트 |
| .touchDragOutside | 컨트롤 bound 밖으로 드래그할 때 발생 이벤트 |
| .touchDragEnter | 터치 후 밖으로 나갔다가 다시 들어올 경우 발생 이벤트 |
| .touchDragExit | 터치 후 밖으로 나간 경우 발생 이벤트 |
| .touchUpInside | 컨트롤 안 쪽에서 터치 후 떼었을 때 발생하는 이벤트 (일반적인 버튼의 클릭 이벤트) |
| .touchUpOutside | 컨트롤 안에서 터치 후 바깥에서 떼었을 때 발생하는 이벤트 |
| .touchCancel | touchUp이벤트 발생하지 않도록 터치를 취소하는 이벤트 |
| .valueChanged | 터치 후 임의로 값이 변경되었을 경우 발생 이벤트 |
| .menuActionTriggered | 메뉴가 보이기 전 발생하는 액션에 대한 이벤트 |
| .primaryActionTriggered | 버튼에의해 일어나는 액션 이벤트 |
| .editingDidBegin | UITextField의 editing 세션 bound내에서 터치가 일어날 때 발생 이벤트 |
| .editingChanged | UITextField의 editing 값이 바뀔 때마다 발생하는 이벤트 |
| .editingDidEnd | UITextField의 editing 세션 bound 밖으로 벗어나서 터치가 종료 될 시 발생하는 이벤트 |
| .editingDidEndOnExit | UITextField의 터치가 종료된 경우 |
| .allTouchEvents | 모든 터치 이벤트 |
| .allEditingEvents | 모든 UITextField의 editing 이벤트 |
| .applicationReserved | 각각 애플리케이션에서 사용하는 컨트롤 이벤트 값들의 범위 |
| .systemReserved | 내부 프레임워크에서 사용하는 예약 이벤트 값의 범위 |
| .allEvents | 시스템 이벤트를 포함한 모든 이벤트 |
UIControl.State
- control의 상태를 표현하는 상수값들
- control은 동시에 여러 개의 상태를 가질 수 있다.
- 예를 들어, UIButton은 normal state일 때 사용하는 이미지와 highlighted state일 때 사용하는 이미지를 달리할 수 있다.
| State | description |
| .normal | selected 되거나 highlighted 되지않은 기본 상태 |
| .highlighted | control이 강조된 상태 |
| .disabled | 사용 불가능한 상태 |
| .selected | 선택되어 있는 상태 |
| .focused | 포커싱된 상태 |
| .application | 애플리케이션에서 사용하는 추가적인 control-state flag들 |
| .reserved | 내부 프레임워크에서 사용하는 예약된 control state flag들 |
728x90