일반적인 코드에 키보드가 올라오는 속도에 맞춰서 TextField도 같이 속도에 맞춰서 올라오게 하는 코드 추가 했다.
let animationDuration = notiInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval
해당 코드가 없을 경우 키보드가 올라오고 TextField 가 뒤늦게 따라 올라오는 경우가 있어서 미세한 차이기는 하지만 거슬린다.
/////////////////////////////////////////////////
// NotificationCenter 키보드 Noti 등록
// 키보드 보이기
NotificationCenter.default.addObserver( self, selector: #selector(keyboardWillShow(noti: )) , name: UIResponder.keyboardWillShowNotification, object: nil)
// 키보드 숨기기
NotificationCenter.default.addObserver( self, selector: #selector(keyboardWillHide(noti: )) , name: UIResponder.keyboardWillHideNotification, object: nil)
// NotificationCenter 삭제
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification , object: nil)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification , object: nil)
@objc func keyboardWillShow(noti: NSNotification) {
//키보드의 높이를 가져오는 코드
let notiInfo = noti.userInfo! as NSDictionary
let keyboardFrame = notiInfo[UIResponder.keyboardFrameEndUserInfoKey] as! CGRect
let height = keyboardFrame.size.height
self.bottomConstraint.constant = height
//애니메이션 추가 (View가 먼저 올라가서 키보드 올라오는 공백이 순간적으로 보이는 문제로 추가)
let animationDuration = notiInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval
UIView.animate(withDuration: animationDuration, animations: { [weak self] in
self?.view.layoutIfNeeded()
}) { (Bool) in
}
}
@objc func keyboardWillHide(noti: NSNotification) {
let notiInfo = noti.userInfo! as NSDictionary
self.bottomConstraint.constant = 0
let animationDuration = notiInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval
UIView.animate(withDuration: animationDuration, animations: { [weak self] in
self?.view.layoutIfNeeded()
}) { (Bool) in
}
}
'Swift > UITextField' 카테고리의 다른 글
[SWIFT]UITextField 정규식 입력정보 설정하기 (0) | 2023.07.20 |
---|---|
[SWIFT]IBDesignable Custom UITextField (0) | 2023.06.09 |
[SWIFT]입력된 텍스트 뒤에서 부터 하나씩 삭제하기 (0) | 2023.06.09 |
[SWIFT]키보드 handler Event TextField 키보드 위/아래 이동 (0) | 2023.06.09 |