티스토리 뷰
키보드에 다른 화면을 구성하고 싶을 때 키보드의 높이와 다르게 배치하면 이쁘지 않은 화면이 될 수 있다. 이럴 경우, 아이폰의 종류에 따라 딱 맞는 키보드의 높이를 가져와 사용하면 유용할 것이다.
아래는 키보드가 보일 경우와 숨겨질 경우, 호출되는 notification을 observer로 받아서 키보드의 높이를 구하는 코드이다.
키보드의 높이를 구하는 것 뿐만아니라 다른 로직도 구현할 수 있다.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// keyboardWillShow, keyboardWillHide observer 등록
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
//
func keyboardWillShow(_ notification:NSNotification) {
if let keyboardFrame: NSValue = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue {
let keyboardRectangle = keyboardFrame.cgRectValue
let keyboardHeight = keyboardRectangle.height
print("keyboardHeight = \(keyboardHeight)")
}
// 원하는 로직...
}
func keyboardWillHide(_ notification:NSNotification) {
// 원하는 로직...
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// observer를 전부 제거
NotificationCenter.default.removeObserver(self)
}
위 코드에는 두가지만 observer로 받아서 사용했지만 그 외에도 UIKeyboardDidShow, UIKeyboardDidHide가 더 있었다.
호출 시점에 따라 원하는 notification을 사용하면 될 것 같다.
UIKeyboardWillShow : 키보드가 보이기 전에 호출.
UIKeyboardDidShow : 키보드가 보인 후에 호출.
UIKeyboardWilllHide : 키보드가 숨겨지기 전에 호출.
UIKeyboardDidHide : 키보드가 숨겨진 후에 호출.
'Swift' 카테고리의 다른 글
UITextView - 현재 커서 위치 가져오기 (0) | 2018.04.05 |
---|---|
UITextView - attributed text center alignment (0) | 2018.04.03 |
App Store Icon 에러!! (0) | 2018.03.29 |
아이폰 status bar 배경색 변경하기 (0) | 2017.06.07 |
CATransaction 사용하여 complete callback 함수 만들어보기. (0) | 2017.06.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- RECORDING
- UIBarButtonItem
- Realm
- AVKit
- m3u8
- ssh
- Closure
- IOS
- HLS
- http live streaming
- AVFoundation
- NIB
- testing
- TDD
- BaseViewController
- Video
- customAlertView
- AssociatedObject
- UIButton
- pagingView
- database
- permission error
- UIControl
- Design Pattern
- carousel
- CollectionView
- xib
- Cleancode
- Coordinator
- Swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함