UITapGestureRecognizer 사용중에 disable하는 방법과 Button이 눌렸는지 체크하는 방법 질문

textView를 isEditable = false로 설정하고 UITapGestureRecognizer를 활용해 탭했을 경우 text를 수정할지 안할지 선택하는 alert창을 띄워 확인을 누르면 isEditable = true로, 숨겨놓은 버튼을 isHidden = false로 설정해 동일한 뷰에서 text를 수정하고 버튼을 눌러 변경된 내용을 저장하거나 취소하도록 만들고 싶습니다. (처음부터 isEditable = true 일 경우 즉시 수정이 가능하지만 커서와 키보드가 생기는 점이 싫어서 이러한 방법을 사용하고자 합니다.)

문제는 탭하여 수정중일 때 저장이나 취소 버튼을 누르지 않았음에도 불구하고 textView를 탭할 경우 TapGestureRecognizer가 반응하여 alert를 또 띄웁니다… 찾아봤을 때는 TapGestureRecognizer가 isEnabled 를 가지고 있음을 확인하였으나, 처음 탭하여 수정 중일 동안, 즉 버튼을 누르기 전까지 TapGestureRecognizer를 isEnabled = false 하고 싶습니다.

viewDidLoad() 에서 어떠한 버튼이 눌렸는지 체크하는 방법을 알고 싶습니다. 혹은 텍스트뷰를 원할 때만 수정가능하게 만드는 더 나은 방법이 있다면 공유부탁드립니다. 감사합니다.

좋아요 1

UITextView의 델리게이트가 필요해보입니다.

편집 시작와 종료 이벤트, 키 변경 등의 이벤트를 다룰 수 있어요.

델리게이트 프로토콜 UITextViewDelegate의 문서 링크 입니다. Apple Developer Documentation

좋아요 1

기술적인 것과 별개로, 이건 좋은 UX는 아닌 듯 합니다. alert는 부정적인 것에 대해 사용하고, 이런 흐름은 action sheet 형태를 사용하는 게 맞습니다.

그보다, 편집모드를 사용하세요. 뷰 컨트롤러에 보면 editingMode 라는 속성이 있어요. 테이블 뷰 컨트롤러의 경우 이 editMode를 잘 활용하는 뷰컨트롤러 중 하나이죠. edit 모드에서 모든걸 편집 가능하도록 하는 게 좋을 듯 해요