私は、キーボードの高さ識別コードがiOS11でもう機能していないことに気付きました。swift iOS11 - keyboardSizeの高さがこれ以上機能しないことを確認しました
iOS10デバイスでは、キーボードが特定の入力フィールド(私の場合はテキストフィールド)を隠すかどうかを検出するためにこのロジックを使用しました。その場合、最後のアクティブなテキストフィールドの下にキーボードが表示され、ユーザーが正しく入力できるようになります。
iOS 11の場合、キーボードの識別の高さはではありません。ここでは、キーボードwillAppearロジック ため
ヘルパークラスの例はkeyBoardWillShowが何をするか、単に一例である - >それだけをチェックし、ビューはキーボードがテキストフィールドを非表示にする予定の場合は、キーボードの上にシフトする必要がある場合。
私はいくつかのdebugginを行なったし、次のコード行は、iOSの10とiOS 11の間で異なる動作をすることを見出し:
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue
iOS10のデバッガ出力
keyboardSize CGRect(原点=(X = 0、y = 568)、サイズ=(幅= 320、高さ= 216))
iOS11デバッガ出力
keyboardSize CGRect(原点=(X = 0、Y = 568)、サイズ=(幅= 320、高さ= 0))
あなたは完全なコードを見ることができます下に - それは、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年9月20日
私は今、何回かそれを試してみました。時にはそれはまた、iOS11のキーボードの高さの値を私に示して - 今、私は完全に混乱している.....