[iOS] 키보드에 가려지는 UITextField 처리하기

[iOS] 키보드에 가려지는 UITextField 처리하기

몇몇 상황에서 iOS 개발이 안드로이드보다 불편할 때가 있는데, 그 중에 하나가 입력란이 키보드에 가려질 때이다.

안드로이드는 시스템에서 알아서 처리해주는데, iOS는 일일이 바꿔줘야한다.

찾아보니 애플에서 제공해주는 소스가 있는데, 동작을 안한다 -_-

 

어차피 나중되면 또 잊어비릴거니까 블로그에 올려놔야한다.

 

먼저 SingleView 프로젝트를 만든다.

스크린샷 2014-06-09 오후 2.35.38

 

 

 

ViewController의 메인뷰를 ScrollView로 바꾸고, 아래에 UIView를 넣고,  UITextField를 넣는다.

스크린샷 2014-06-09 오후 2.37.54

 

 

실행하면 9까지는 커서가 보이지만, 10부터는 입력란이 보이지가 않는다.

스크린샷 2014-06-09 오후 2.38.10

 

 

 

일단 UITextFieldDelegate를 추가해주고,

 

 

 

UITextField의 Delegate를 ViewController로 지정해준다.

스크린샷 2014-06-09 오후 2.48.54

 

 

키보드가 표시될 때/숨겨질 때를 받아오고, 뷰가 닫힐 때 해제한다.

 

 

입력란에 커서가 표시되면 현재 입력 중인 UITextField를 저장해놓고, activeField가 키보드에 가려진다면 스크롤을 이동시킨다.

 

 

그럼 이렇게 13번도 잘 표시가 된다.

스크린샷 2014-06-09 오후 2.49.04

 

 

 

그럼 이제 빈 곳을 터치하면 커서를 빼는 동작을 넣어야한다.

Tap Gesture Recognizer를 추가하고, scrollView와 연결시켜준다.

스크린샷 2014-06-09 오후 2.49.48

 

 

 

 

Tap Gesture의 selector를 연결시켜주고,

스크린샷 2014-06-09 오후 2.51.13

 

resignFirstResponder 를 호출시켜주면 된다.

 

Full Source : https://github.com/susemi99/KeyboardManagingForUITextField

 

  • 해보니까 차라리 UiTableViewController + Static Cell을 이용해서하는게 훨신 낫다 ;;;

  • jkkim

    제 생명의 은인이십니다
    진심을 다해 감사드립니다 ㅠㅜ 애플문서만 보고 얼마나 삽질을 했는지..
    정말 감사드립니다.

    • 쎄미

      축하드립니다 ㅎㅎ