티스토리 뷰

728x90

앱에서 키보드를 띄운다음 키보드 외 화면을 누르면 키보드가 내려가는 기능을 알아 볼건데요.

 

 

너무 당연히 될 줄 알았던 기능이었지만,

이것도 따로 구현이 필요합니다.

 

그래도 생각보다 꽤 간단하니 바로 정리해 봅시다!

 


+추가 (22.02.28)

 

같이 블로깅 스터디 하시는 분이 더 쉬운방법을 공유해 주셨어요 !! 

 

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        view.endEditing(true)
    }

위의 짧은 코드를 추가하면 끝!! 

 


 

 

 

먼저 tap을 감지하는 메소드인

UITapGestureRecognizer(target:, action:) 

를 사용해줍니다.

 

override func viewDidLoad() {
        super.viewDidLoad()
        
        hideKeyboard()
        
}

func hideKeyboard() {
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self,
                                                                 action: #selector(dismissKeyboard))
        view.addGestureRecognizer(tap)
        
        // 또는 아래처럼 작성하셔도 됩니다.
        
       // view.addGestureRecognizer(UITapGestureRecognizer(target: self,
       //                                                  action: #selector(dismissKeyboard)))
    }
    
   @objc func dismissKeyboard() {
       view.endEditing(true)
   }

 

자 끝이에요! 생각보다 간단하죠!? 

 

 

만약 모든 UIViewController에 사용하고 싶다면 

Extension에 따로 만들어 놓고 메소드 호출만 하는 방법도 있습니다.

 

// Extension.Swift

import UIKit

extension UIViewController {
    func hideKeyboardWhenTappedAround() {
        let tap = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        tap.cancelsTouchesInView = false            
        view.addGestureRecognizer(tap)
    }
    
    @objc func dismissKeyboard() {
        view.endEditing(true)
    }
}

 

아래는 최종 코드 입니다. (더보기 클릭)

 

 


그동안 앱을 사용해오면서 당연하다고 느꼈던것들이 

하나하나 개발자의 손으로 만들어 지고 있었던걸 다시 느끼게 되는 계기 였던것 같습니다. 

요즘 UITextField 부분을 작업해보는중인데 소소하지만 블로깅할게 많아질것 같네요 !!


이해하는데 도움이 됐어요

StackOverFlow

 

728x90