728x90
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
'iOS > 설명' 카테고리의 다른 글
[iOS] 로컬 알림 (Local Notification) (0) | 2021.04.28 |
---|---|
[iOS] 프로퍼티 리스트 (Property List) (0) | 2021.04.25 |
[iOS] 코코아 터치 프레임워크 (Cocoa Touch Framework) (0) | 2021.04.22 |
[iOS] present로 화면 이동 시 full screen으로 이동 (0) | 2021.02.03 |
[iOS] frame과 bounds의 차이 (0) | 2021.01.21 |
댓글