반응형
PopUp으로 띄운 창에 글을 쓸 필요가 있었다.
하지만 키보드가 띄워진 순간 창을 가리거나 비율이 안맞는 등, 만족스럽지 못하였다.
따라서 키보드 레이아웃에 맞게 유동적으로 popup 창이 이동 되야할 필요가 있었다.
NotificationCenter 를 이용해 키보드 창을 탐색하고
키보드가 나타날시 StackView의 transform을 이용하여 이동시켰다.
아래의 addKeyboardNotification()을 viewDidLoad()에 넣어주면 된다.
private func addKeyboardNotification() {
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardWillShow),
name: UIResponder.keyboardWillShowNotification,
object: nil
)
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardWillHide),
name: UIResponder.keyboardWillHideNotification,
object: nil
)
}
@objc private func keyboardWillShow(_ notification: Notification) {
if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
let keybaordRectangle = keyboardFrame.cgRectValue
let keyboardHeight = keybaordRectangle.height
// preparedView.frame.origin.y -= keyboardHeight
containerView.transform = CGAffineTransform(translationX: 0, y: -keyboardHeight/2)
}
}
@objc private func keyboardWillHide(_ notification: Notification) {
if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
let keybaordRectangle = keyboardFrame.cgRectValue
let keyboardHeight = keybaordRectangle.height
// preparedView.nextButton.frame.origin.y += keyboardHeight
containerView.transform = CGAffineTransform(translationX: 0, y: keyboardHeight/2)
}
}
'iOS' 카테고리의 다른 글
[Swift] dismiss 후 present with navigation (0) | 2022.03.22 |
---|---|
[Swift] Textfield 자동으로 키보드 띄우기 (0) | 2022.03.15 |
[Swift] UITabBarController, UISegmentedControl (0) | 2022.02.24 |
[Swift] Storyboard Navigation Controller (0) | 2022.02.20 |
[Swift] Firebase Sign In (0) | 2022.02.18 |