본문 바로가기
iOS/설명

[iOS] UIControl

by Sky Titan 2021. 4. 25.
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

댓글