Właśnie zauważyłem, że mój kod identyfikacyjny wysokości klawiatury nie działa już z iOS11.Swift iOS11 - identyfikacja klawiaturyRozmiar wysokości już nie działa
Dla urządzeń z systemem iOS10 użyłem tej logiki, aby wykryć, czy klawiatura ukryje określone pole wejściowe (w moim przypadku pole tekstowe). W takim przypadku klawiatura będzie wyświetlana pod ostatnim aktywnym polem tekstowym, aby umożliwić użytkownikom prawidłowe wprowadzanie danych.
W przypadku iOS 11 identyfikacja klawiatury wysokość nie działa.
Helper klasa przykładem klawiatury willAppear logiki Tutaj jest tylko przykładem tego, co robi keyBoardWillShow -> liczy się tylko, jeśli widok musi być przesunięta nad klawiaturą, czy klawiatura ma zamiar ukryć pole tekstowe.
I tak niektóre optymalnie spełniało i okazało się, że poniżej linii kodu działa odmiennie od iOS 10 i iOS 11:
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue
wyjściowego debugera iOS10
keyboardSize CGRect (z = (X = 0, y = 568), rozmiar = (szerokość = 320, wysokość = 216))
Wyjście debuggera iOS11
keyboardSize CGRect (origin = (x = 0, y = 568), size = (width = 320, height = 0))
Poniżej można zobaczyć pełny kod - to działało aż iOS 10,3
func keyboardWillShow(notification: NSNotification, view: UIView, activeTextField: UITextField?, scrollView: UIScrollView?) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if view.frame.origin.y == 0{
var aRect : CGRect = (view.viewWithTag(2)?.frame)!
aRect.size.height -= keyboardSize.height
if let activeField = activeTextField {
let tempPoint = CGPoint(x: activeField.frame.origin.x, y: activeField.frame.origin.y + 20)
if (aRect.size.height < tempPoint.y){
view.frame.origin.y -= keyboardSize.height
if let scrollView = scrollView {
let bottomOffset = CGPoint(x: 0, y: scrollView.contentSize.height - scrollView.bounds.size.height)
scrollView.setContentOffset(bottomOffset, animated: true)
}
}
}
}
}
}
UPDATE 2017/09/20
próbowałem go teraz kilka razy. Czasami jest to pokazuje mi również klawiaturę wartość wysokości dla iOS11 - teraz jestem całkowicie mylić .....