2016-12-31 2 views
0

У меня есть установка внизу. Хорошая работа по перемещению текстовых полей над клавиатурой, когда клавиатура находится на экране. В тот самый момент, если пользователь отключает интеллектуальную клавиатуру, высота не может перенастраиваться на новую клавиатуруFrame.height + 20 (дополнительное дополнение между клавиатурой и текстовым полем). Что такое хороший способ перенастроить scrollView.contentInset.bottom, когда клавиатура находится на экране, и пользователь продолжает переключаться между интеллектуальными вкл/выкл?Как отрегулировать вставку scrollview, когда клавиатура находится на экране, и пользователь выбрал прогностическое включение/выключение?

ViewDidLoad:

NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow(notificaiton:)), name: .UIKeyboardWillShow, object: nil) 

NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide(notification:)), name: .UIKeyboardWillHide, object: nil) 

Oberservers:

//MARK: Keyboard Notifications 

func keyboardWillShow(notificaiton: Notification) { 

    adjustKeyboardHeight(show: true, notification: notificaiton) 
} 

func keyboardWillHide(notification: Notification) { 

    adjustKeyboardHeight(show: false, notification: notification) 

} 


private func adjustKeyboardHeight(show: Bool, notification: Notification) { 

    let userInfo = notification.userInfo! 

    let keyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue 

    if show { 

     fgScrollView.contentInset.bottom = keyboardFrame.height + 20 
    } else { 

     fgScrollView.contentInset = UIEdgeInsets.zero 
    } 


} 

//MARK: TextField Delegate 
func textFieldShouldReturn(_ textField: UITextField) -> Bool { 

    if textField == emailTextField { 

     nextTextField.becomeFirstResponder() 
    } 

    textField.resignFirstResponder() 

    return true 
} 
+0

для этих случаев я действительно люблю следовать https://github.com/hackiftekhar/IQKeyboardManager, вы можете попробовать – Fay007

+0

спасибо. Любые идеи о том, как это сделать без сторонних решений? – Revanth

+0

Получаете ли вы уведомление о прогнозе и выключении? – iYoung

ответ

0

Добавить keyboardWillChangeFrame наблюдатель, этот oberver будет вызываться каждый раз, когда клавиатура рамка изменится

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChangeFrame(notificaiton:)), name: .UIKeyboardWillChangeFrame, object: nil) 

    func keyboardWillChangeFrame(notificaiton : Notification) -> Void { 

      print("New frame of keyboard = \(notificaiton.userInfo?[UIKeyboardFrameEndUserInfoKey] ?? 0)") 

    } 
Смежные вопросы