[iOS/Objective-C] 키보드를 감추는 iOS 앱 만들기

seb Incode·2023년 7월 3일
0

지난 포스팅의 섭씨->화씨로 변환하는 앱을 실행해보면 입력할 땐 키보드가 자동으로 올라오는데, 키보드의 return키를 누르거나 디스플레이 다른 부분을 터치해도 키보드가 사라지지 않는다.
왜냐하면 아이폰 앱은 키보드를 사라지게 하는 기능을 개발자가 직접 구현해 놓아야하기 때문이다.(..ㄴㅇ0ㅇㄱ !)

따라서 이번 포스팅에서는 키보드를 감추는 코드를 만들 것이다.

예제 앱 만들기

인터페이스 UI 생성

⬇️ HideKeyBoard 라는 이름의 프로젝트를 새로 생성한다.

⬇️ 텍스트를 입력 받는 text field 컨트롤을 화면에 추가하고
.h파일에 저 컨트롤 접근을 위한 아웃렛을 정의한다.

return키 눌렀을 때 키보드 감추는 동작 구현

이제 사용자가 키보드의 return키를 눌렀을 때 키보드를 감추도록 구현할 것이다.

⬇️ .h파일에 키보드를 감추는 동작을 할 메소드를 선언한다.
이름은 내맘대루

⬇️ 그리고 .m파일로 와보자
⚠️경고문이 생겨있다⚠️
방금 선언한 메소드의 구현부가 없다고 경고를 주는 것이다.

보기 싫으니까 얼른 메소드를 구현하자

⬇️ 쨘 간결한 한 줄 코드 완성 ~
고작 한 줄이지만 많은 설명과 개념이 들어있는 구문이다 물론 내 기쥰..
sender 객체의 메소드 resignFirstResponder()를 호출한다.
영어를 해석하면 메소드의 역할을 알 수 있다.

resign : 사임하다
FirstResponder : 사용자가 현재 상호작용 하고 있는 객체를 의미
(이 예제에서는 가상 키보드가 될 것임)

자연스럽게 해석하면 FirstResponder라는 자격을 포기하게 하는 메소드이다.

예를 들어 사용자가 text field를 누르면 FirstResponder 자격은 text field가 갖게 된다. 이 때, return키를 눌렀을 때 이벤트로 resignFirstResponder()를 호출하도록 구현한다면 ?
강제로 text field가 갖고 있는 FirstResponder 자격을 포기하게 할 수 있고, 그렇게 가상 키보드를 감출 수 있는 것이다 !

그냥 애플에서 눈치껏 자격 반납하도록 구현해줬으면.. 큼큼


그리고 여기서 구현이 끝났다고 생각했다..쩝
메소드를 실행시킬 시점 연결을 안했다 ㅎㅎ;;

return키를 눌렀을 때 동작하도록 설정해보자..

⬇️ 우측 상단에 표시한 아이콘 클릭하면 connection Inspector가 뜬다.

⬇️ Sent Events -> Did End on Exit 이벤트 옆 원을 누른 상태로 -> 아래 사진처럼 뷰 컨트롤러 아이콘까지 드래그한다.

⬇️ 드래깅해서 연결하면 메소드 목록들이 뜬다. textFieldRetrun을 클릭한다.

⬇️ 이벤트와 메소드가 연결된 것을 connection Inspector에서 확인할 수 있다.

이제 run 해보자

⬇️ 텍스트를 처보고 return키를 눌러보자(스페이스 바 오른쪽 버튼)

⬇️ 사라짐요 ~

사용자가 백그라운드 화면 터치했을 때 키보드 감추는 동작 구현

⬇️ ❌ 코드 추후 설명 ❌

사용자가 터치한 객체가 edtText가 아니라는 것을 검사한 후 키보드를 감추기 위한 resignFirstResponder()를 호출한다.

🦠 마지막 줄 주석처리 안하면 컴파일 에러남 개어이없음 ㅜ

0개의 댓글