У меня есть пользовательский UIView
, который является подпредставлением для UIViewController
.
Я добавил его в свою раскадровку и установил его в Скрытый.
Мое подпредставление также находится вдругой UIView
, который я использую в качестве «размытия», который также изначально скрыт.
У меня есть функции, которые будут показывать и скрывать подпредставления.
Мое пользовательское подпредставление имеет UITextField
.Я могу показать клавиатуру и переместить подпрограмму вверх без проблем.Когда я набираю клавиатуру или отклоняю ее, мое подпредставление перемещается вверх и влево.Когда я пытаюсь снова показать свое подпредставление, оно отображается неправильно (вверх и влево).
Настраиваемое подпредставление начинается в центре моего экрана.
Цель состоит в том, чтобы переместить его вверх, когдаклавиатура отображается так, что она не будет охватывать подпредставление или UITextField
, позволять пользователю вводить UITextField
, а затем отклонять клавиатуру и перемещать пользовательское подпредставление обратно в центр.
В моем UIViewController:
// Showing the custom sub view
func displayCustomSubView() {
if let window = UIApplication.shared.keyWindow {
self.blurView.isHidden = false
self.customSubView.isHidden = false
self.blurView.frame = window.frame
self.customSubView.center = window.center
window.addSubview(self.blurView)
UIApplication.shared.keyWindow?.bringSubviewToFront(self.blurView)
}
}
// Hiding the custom sub view
// the custom sub view has a button I tap to hide
@objc func dismissCustomSubView() {
self.blurView.isHidden = true
self.customSubView.isHidden = true
}
// Show Keyboard
// Since I am using the window to make sure my blur view expands to the full frame, I have tried just moving the window up
@objc func keyboardWillShow(sender: NSNotification) {
if let window = UIApplication.shared.keyWindow {
window.frame.origin.y = -75
}
}
// Hide Keyboard
@objc func keyboardWillHide(sender: NSNotification) {
if let window = UIApplication.shared.keyWindow {
window.frame.origin.y = 0
}
}
// Custom Subview Extension
extension CustomSubView: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
Добавленное расширение собственного подпредставления выше.