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
- 프로그래머스 n번째 원소까지
- 프로그래머스 문자열 정렬하기 (1)
- 프로그래머스 자동커밋
- 배열 만들기1
- 스파르타코딩캠프
- swift
- Break
- 문자열 정렬하기 (1)
- array
- 주사위 게임1
- 프로그래머스 주사위 게임1
- Til
- 스페인어
- n번째 원소까지
- cocoapods 설치 오류
- 연산자
- 프로그래머스 암호 해독
- 문자열 붙여서 출력하기
- continue
- 프로그래머스 문자열 붙여서 출력하기
- 프로그래머스 최댓값 만들기(2)
- 프로그래머스 n의 배수 고르기
- 객체지향
- 프로그래머스 조건에 맞게 수열 변경하기 3
- 스파르타 코딩클럽 내일배움캠프
- 프로그래머스
- 조건에 맞게 수열 변경하기 3
- ruby설치
- 프로그래머스 배열 만들기1
- Error installing cocoapods
Archives
- Today
- Total
dev._.note
[Swift] Gesture Recognizer(재스처 제어) 본문
Gesture Recognizer
제스처 인식기는 여러 제스처 관련 이벤트를 인식할 수 있습니다. 특정 제스처 이벤트가 일어날 때마다 각 타깃에 맞는 액션 메시지를 보내어 제스처 관련 이벤트를 처리할 수 있습니다.
UIGestureRecognizer의 하위 클래스
아래의 7가지의 UIGestureRecognizer 하위 클래스를 통해 여러 제스처를 인식할 수 있습니다.
- UITapGestureRecognizer : 싱글탭 또는 멀티탭 제스처
- UIPinchGestureRecognizer : 핀치(Pinch) 제스처
- UIRotationGestureRecognizer : 회전 제스처
- UISwipeGestureRecognizer : 스와이프(swipe) 제스처
- UIPanGestureRecognizer : 드래그(drag) 제스처
- UIScreenEdgePanGestureRecognizer : 화면 가장자리 드래그 제스처
- UILongPressGestureRecognizer : 롱 프레스(long-press) 제스처
- 제스처 인식기를 사용하기 위해서 타깃-액션 연결을 설정한 후 UIView의 메서드인 addGestureRecognizer(_:) 메서드를 통해 뷰에 연결합니다. 제스처가 인식되면 해당 제스처 이벤트에 연결된 타깃에 액션 메시지가 전달됩니다. 호출되는 액션 메서드는 아래의 메서드 구현 형식 중 하나와 같아야 합니다.
UIGestureRecognizer의 주요 메서드
- init(target: Any?, action: Selector?) : 제스처 인식기를 타깃-액션의 연결을 통해 초기화 합니다.
- func location(in: UIView?) -> CGPoint : 제스처가 발생한 좌표를 반환합니다.
- func addTarget(Any, action: Selector) : 제스처 인식기 객체에 타깃과 액션을 추가합니다.
- func removeTarget(Any?, action: Selector?) : 제스처 인식기 객체로부터 타깃과 액션을 제거합니다.
- func require(toFail: UIGestureRecognizer) : 여러 개의 제스처 인식기를 가지고 있을 때, 제스처 인식기 사이의 의존성을 설정합니다.
UIGestureRecognizer의 주요 프로퍼티
- var state: UIGestureRecognizerState : 현재 제스처 인식기의 상태를 나타냅니다.
- var view: UIView? : 제스처 인식기가 연결된 뷰입니다.
- var isEnabled: Bool : 제스처 인식기가 사용 가능한 상태인지를 나타냅니다.
- var cancelsTouchInView : 제스처가 인식되었을 때 터치 이벤트가 뷰로 전달되는 여부에 영향을 미칩니다.
- 이 프로퍼티가 true(기본값)이고 제스처 인식기가 제스처를 인식했다면, 해당 제스처의 터치는 뷰로 전달되지 않습니다. 이전에 전달된 터치들은 touchesCancelled(_:with:) 메시지를 통해 취소됩니다. 제스처 인식기가 제스처를 인식 못하거나 이 프로퍼티의 값이 false라면 뷰가 모든 터치를 전달받게 됩니다.
- var delaysTouchesBegan : began 단계에서 제스처 인식기가 추가된 뷰에 터치의 전달 지연 여부를 결정합니다.
- var delaysTouchesEnded : end 단계에서 제스처 인식기가 추가된 뷰에 터치의 전달 지연 여부를 결정합니다.
# 예제 코드
class ViewController: UIViewController, UIGestureRecognizerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
/* tapGesture를 target-action디자인 패턴으로 추가하는 코드
let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.tapView(_:)))
self.view.addGestureRecognizer(tapGesture)
*/
let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer()
tapGesture.delegate = self
self.view.addGestureRecognizer(tapGesture)
}
@IBAction func tapView(_ sender: UITapGestureRecognizer){
self.view.endEditing(true)
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
self.view.endEditing(true)
return true
}
}
참고) iOS의 Standard Gesture
- Tap : 컨트롤을 활성화하거나 항목을 선택합니다.
- Drag : 아이템을 좌우 또는 화면으로 드래그할 수 있습니다.
- Flick : 빠르게 스크롤하거나 화면을 넘길 수 있습니다.
- Swipe : 이전 화면으로 돌아가거나 테이블 뷰에서 숨겨진 삭제 버튼을 표시할 수 있습니다.
- Double tap : 이미지 또는 콘텐츠를 확대하거나 다시 축소합니다.
- Pinch : 이미지를 세밀하게 확대하거나 다시 축소할 수 있습니다.
- Touch and hold : 편집 가능한 텍스트 또는 선택 가능한 텍스트에서 수행될 경우 커서 지정을 위한 확대보기가 표시됩니다. 컬렉션 뷰의 경우 항목을 재배치할 수 있는 모드로 진입합니다.
- Shake : 실행 취소 또는 다시 실행 얼럿을 띄웁니다.
'Dev > SWIFT' 카테고리의 다른 글
[Swift] 모든 테이블뷰 컨텐츠에 동일하게 마진값 적용 (0) | 2024.03.14 |
---|---|
[Swift] 테이블뷰 섹션간의 간격 조절 (0) | 2024.03.13 |
[Swift] Mapkit 위치 검색 (0) | 2024.03.08 |
[Swift] 앱의 생명주기 (Life Cycle) (0) | 2024.03.07 |
[Swift] FSCalendar 라이브러리 (0) | 2024.03.06 |