
테이블 뷰는 기본적으로 scroll을 사용합니다.
그래서 tableView에 다른 제스처 액션을 추가하면, 작동하지 않습니다.
자세한 이유는
2021.11.17 - [iOS 개발] - [GestureRecognizer] Gesture 잘 사용하기 - 동시에 여러 gesture 사용하기, 주의점
[GestureRecognizer] Gesture 잘 사용하기 - 동시에 여러 gesture 사용하기, 주의점
제스처를 사용하는 방법은 간단합니다. 자! 저는 지금부터 infoView라는 제가 만든 View에 왼쪽으로 Swipe했을 때 어떤 동작이 실행되도록 해보겠습니다!! 먼저 우리는 제스처 인식기를 만들어주어야
hasensprung.tistory.com
이곳에 열심히 적어두었으니 꼭 참고하시길 바랍니다!!
이런 방법으로 해결을 한 코드는 다음과 같습니다ㅎㅎ
extension ListTableViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
let swipe = UISwipeGestureRecognizer(target: self, action: #selector(backButtonPressed))
let calendarSwipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(dateFWButtonPressed))
let calendarSwipeRight = UISwipeGestureRecognizer(target: self, action: #selector(dateBWButtonPressed))
swipe.direction = .right
swipe.delegate = self
calendarSwipeLeft.direction = .left
calendarSwipeRight.direction = .right
self.listTableView.addGestureRecognizer(swipe)
self.calendarView.gestureRecognizers = [calendarSwipeLeft, calendarSwipeRight]
줄여서 이야기하자면, 여러 종류의 제스처 액션 인식기를 사용하기 위해서는
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool
delegate를 채택해서, 이 제스처 인식기가 여러 제스처를 모두 인식을 하게 해주는 함수의 리턴값을 True로 바꿔주면 됩니다.
또 addGeustreRecognizer과 같이 사용해야 하고, view.gestureRecognizers = [] 이런식으로 사용하면 안된다는 것.
꼭 기억합시다!!
'iOS 개발 > UIKit' 카테고리의 다른 글
[Auto Layout] Multiplier(2) (0) | 2021.12.22 |
---|---|
[Auto Layout] Multiplier(1) (0) | 2021.12.21 |
[Auto Layout] Equal Constraints에 대해서 (0) | 2021.12.20 |
[UITableView] SwipeAction - cell 삭제 (확인 Alert와 함께) (0) | 2021.11.29 |
[UITextView] 줄 수, 글자 수 제한 (0) | 2021.11.22 |
[UIView] 정말 예쁜 blur Effect (0) | 2021.11.21 |
[Swift] App 첫 로딩을 감지하는 법 (first loading detection) (0) | 2021.11.20 |
[Swift] 앱 안에서 메일 보내기 (0) | 2021.11.20 |