как переместить вид, когда клавиатура появляется только на небольших устройствах - PullRequest
0 голосов
/ 07 октября 2019

Я работаю над приложением iPhone, и у меня есть несколько UITextFields для ввода.

проблема с небольшими устройствами, такими как iPhone 5, 6. Когда появляется клавиатура, нижние текстовые поля скрываются. он отлично работает с большим экраном iPhone, таким как XR, XS Max

, как я могу добавить условие, которое проверяет, скрыты ли нижние текстовые поля или нет?

 guard let keyboardReact = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else {
            return
        }
        let screen = view.frame.size.height - keyboardReact.height
        let safeAreHeight = self.view.frame.height - self.topLayoutGuide.length - self.bottomLayoutGuide.length

        if  safeAreHeight + keyboardReact.height > view.frame.size.height {
            if currentTappedTextField == phoneTextField || currentTappedTextField == employeeEmailTextField  || currentTappedTextField == relationTextField {
                if notification.name == UIResponder.keyboardWillShowNotification || notification.name == UIResponder.keyboardWillChangeFrameNotification{
                    view.frame.origin.y = -(keyboardReact.height)
                } else {
                    view.frame.origin.y = 0
                }
            }
        }

Это работает со всеми размерами экранаЯ хочу, чтобы он работал только тогда, когда клавиатура скрывает textFields

1 Ответ

0 голосов
/ 07 октября 2019

Теперь вы можете рассчитать высоту клавиатуры и переместить ваш взгляд в соответствии

func liftViewUp(notification: NSNotification){
        if let keyboardSize = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? CGRect {
       // manage your view accordingly here



 if currentTappedTextField == phoneTextField || currentTappedTextField == employeeEmailTextField  || currentTappedTextField == relationTextField {
                    if notification.name == UIResponder.keyboardWillShowNotification || notification.name == UIResponder.keyboardWillChangeFrameNotification{



     let textFieldPosition = currentTappedTextField.frame.origin.y + currentTappedTextField.frame.size.height

// check if textfield will hide behind keyboard
  if textFieldPosition > (view.frame.size.height - keyboardReact.height){

            view.frame.origin.y = -(keyboardReact.height)
     }else {
            view.frame.origin.y = 0
           }
 } else {
          view.frame.origin.y = 0
         }
      }
 }
}

или Вы можете попробовать эту стороннюю библиотеку IQKeyboardManager

Возможно, вы получили ответ здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...