정리 X/UIKit

Control에 관하여

va95 2021. 2. 6. 01:42

IBAction이 아닌 코드로는 다음과 같이

 

func addTarget(_ target: Any?,  action: Selector,  for controlEvents: UIControl.Event)

ex) button.addTarget(self,  action: #selector(ViewController.func),  for controlEvents: .touchUpInside)

target에는 일을 맡아줄 객체를 선정하고(여기선 viewController) -> action에는 그 객체가 할 수 있는 함수를 호출해주고(인자가 0개일 땐 괄호 생략) -> 어떤 이벤트가 들어왔는지 기입

selector에서 인자가 0개 이거나 함수명이 단일인 경우는 생략할 수 있는데 아닌 경우는 (_: for:)처럼 표시해줘야함

 

 

*selector는 objc문법이므로 인터페이스빌더에게 알려줘야함*

@objc func()

@objc func(_ sender: UIButton, for controlEvents: UIControl.Event)

 

 

아래의 3개의 action 가능 (UIEvent와 UIControl.Event는 아예 다른거임 조심, UIEvent는 좌표같이 상세한 이벤트 정보)

@IBAction func doSomething()

@IBAction func doSomething(sender: UIButton)

@IBAction func doSomething(sender: UIButton, forEvent event: UIEvent)

-> 실험해보니 기본적으론 sender만 있는 함수로 생성됨

-> 그래서 나중에 인자 바꾸면 오류남; 1, 3번 쓸려면 미리 만들고 이어주어야할 듯

 

 

* 인터페이스 빌더가 만능은 아니구나... 없는 것들은 코드로 구현해줘야하넹

 

 


 

 

UIControl.State

 

5가지 + 2가지

normal

highlighted

disabled

selected

focused

application : Additional control-state flags available for application use.

reserved : Control-state flags reserved for internal framework use.

 

 


 

 

UIControl.Event

- 여기서 인터페이스빌더가 지원안하는 이벤트도 있음. 그런건 코드로 구현해야할 듯

 

 

 

touchDown

컨트롤을 터치했을 때 발생하는 이벤트

UIControl.Event.touchDown

 

touchDownRepeat

컨트롤을 연속 터치 할 때 발생하는 이벤트

UIControl.Event.touchDownRepeat

 

touchDragInside

컨트롤 범위 내에서 터치한 영역을 드래그 할 때 발생하는 이벤트

UIControl.Event.touchDragInside

 

touchDragOutside

터치 영역이 컨트롤의 바깥쪽에서 드래그 할 때 발생하는 이벤트

UIControl.Event.touchDragOutside

 

touchDragEnter

터치 영역이 컨트롤의 일정 영역 바깥쪽으로 나갔다가 다시 들어왔을 때 발생하는 이벤트

UIControl.Event.touchDragEnter

 

touchDragExit

터치 영역이 컨트롤의 일정 영역 바깥쪽으로 나갔을 때 발생하는 이벤트

UIControl.Event.touchDragExit

 

touchUpInside

컨트롤 영역 안쪽에서 터치 후 뗐을때 발생하는 이벤트

UIControl.Event.touchUpInside

 

touchUpOutside

컨트롤 영역 안쪽에서 터치 후 컨트롤 밖에서 뗐을때 이벤트

UIControl.Event.touchUpOutside

 

touchCancel

터치를 취소하는 이벤트 (touchUp 이벤트가 발생되지 않음)

UIControl.Event.touchCancel

 

valueChanged

터치를 드래그 및 다른 방법으로 조작하여 값이 변경되었을때 발생하는 이벤트

UIControl.Event.valueChanged

 

primaryActionTriggered

버튼이 눌릴때 발생하는 이벤트 (iOS보다는 tvOS에서 사용)

UIControl.Event.primaryActionTriggered

 

editingDidBegin

UITextField에서 편집이 시작될 때 호출되는 이벤트

UIControl.Event.editingDidBegin

 

editingChanged

UITextField에서 값이 바뀔 때마다 호출되는 이벤트

UIControl.Event.editingChanged

 

editingDidEnd

UITextField에서 외부객체와의 상호작용으로 인해 편집이 종료되었을 때 발생하는 이벤트

UIControl.Event.editingDidEnd

 

editingDidEndOnExit

UITextField의 편집상태에서 키보드의 return 키를 터치했을 때 발생하는 이벤트

UIControl.Event.editingDidEndOnExit

 

allTouchEvents

모든 터치 이벤트

UIControl.Event.allTouchEvents

 

allEditingEvents

UITextField에서 편집작업의 이벤트

UIControl.Event.allEditingEvents

 

applicationReserved

각각의 애플리케이션에서 프로그래머가 임의로 지정할 수 있는 이벤트 값의 범위

UIControl.Event.applicationReserved

 

systemReserved

프레임워크 내에서 사용하는 예약된 이벤트 값의 범위

UIControl.Event.systemReserved

 

allEvents

시스템 이벤트를 포함한 모든 이벤트

UIControl.Event.allEvents