iPadを1時間操作した後、私はついにこれを迅速に解決する良い解決策を得ました。他の方法は弱く、サードパーティのソフトウェアを使用しています。 iPad用に外付けキーボードを使用していてもUIKeyboardWillShowNotification
が発射されている理由は、ショートカットバーが存在するためです。これはあなたが必要なもののほとんどのケースをカバーしてい
let item : UITextInputAssistantItem = textField.inputAssistantItem
item.leadingBarButtonGroups = []
item.trailingBarButtonGroups = []
、誰かが使用する特定の時点でで自分のキーボードを差し込む場合UIKeyboardWillShowNotification
はまだ解雇することができます:ショートカットバーを無効にするためには、これを行います。画面が調整されている場合は、ユーザーがこれを体験する余裕はありません。さらに、何らかの理由でショートカットバーが必要な場合もあります。関係なく、あなたの欲望が何であるかの、これが使用されている外付けキーボードのすべてのケースを取り上げます。
ビューを去る時はいつでもあなたは
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil)
を残して作るものにこれを追加し
viewDidAppear
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginViewController.keyboardWillShow), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginViewController.keyboardWillHide), name: UIKeyboardWillHideNotification, object: nil)
に追加
も、それを加算する方法に追加します。
さて、これらの関数を使用します。
func keyboardWillShow(notification: NSNotification) {
// This code is an alternate way of checking for keyboard
var userInfo: [NSObject: AnyObject] = notification.userInfo!
let firstFrame = userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue
let secondFrame = userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue
let firstRect = firstFrame.CGRectValue()
let secondRect = secondFrame.CGRectValue()
let diff = abs(firstRect.origin.y - secondRect.origin.y)
let isFirstBigger = firstRect.origin.y > secondRect.origin.y
if firstRect != secondRect && diff != 55 {
if !isFirstBigger {
//animateViewToDefaultPosition()
} else {
//animateViewToPositionWhenKeyboardActive()
}
}
}
func keyboardWillHide() {
//animateViewToDefaultPosition()
}
55は、ショートカットバーの高さです。あなたはそれがない場合は、その機能を削除することができます。 !isFirstBigger
は、テキストフィールドの編集中にキーボードがフックを解除して戻したときをチェックするために使用されます。このチェック中にdiff != 55
が重要でもあります。これは、ショートカットバーを使用すると、画面をアニメートしたくないためです。
これは私がStack Overflowを精練した後に見た最良の方法です。もし誰かが機能にバグを見つけたら、私に知らせてください。しかし、私はそれが厄介なショートカットバーの外付けキーボードの問題を処理すると確信しています。私はこれがこのすべてによって混乱しているのを手伝ってくれることを願っています!