2016-07-29 15 views
2

どのようにキーボードの高さの変化、またはiOSの迅速なキーボードの変更を検出するには?
私の下のコードを参照してください、それがテキストキーボードと絵文字キーボードに非常に小さなラインを示していますキーボードの高さを変更するオブザーバースイフト

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardHideNShow(_:)), name: UIKeyboardWillShowNotification, object: nil) 
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardHideNShow(_:)), name: UIKeyboardWillHideNotification, object: nil) 
var didDisplayedKeyboard:Bool = false 

func keyboardHideNShow(notification:NSNotification) { 

var movement: CGFloat = 0.0 
let userInfo:NSDictionary = notification.userInfo! 
let keyboardFrame:NSValue = userInfo.valueForKey(UIKeyboardFrameEndUserInfoKey) as! NSValue 
let keyboardRectangle = keyboardFrame.CGRectValue() 

let movementDuration:NSTimeInterval = 0.3 
UIView.beginAnimations("animateView", context: nil) 
UIView.setAnimationBeginsFromCurrentState(true) 
UIView.setAnimationDuration(movementDuration) 

if notification.name == UIKeyboardWillShowNotification { 
    // Do the operation only if its hide n show or show n hide 
    // When the keyboard switches from text to emoji, it wont hide the previous keyboard. will just replace 
    //  In that case we need to avoid the keyboard movement 
    if didDisplayedKeyboard == false { 
     movement = -keyboardRectangle.height 
     didDisplayedKeyboard = true 
     print("m\(movement)") 
     self.view.frame = CGRectOffset(self.view.frame, 0, movement) 
    } 

} else if notification.name == UIKeyboardWillHideNotification { 

    movement = keyboardRectangle.height 
    didDisplayedKeyboard = false 
    self.view.frame = CGRectOffset(self.view.frame, 0, movement) 
} 
UIView.commitAnimations() 
} 

私は私の視野を調整するにはどうすればよいですか?このような

+2

通知「UIKeyboardWillChangeFrameNotification」を確認してください – zylenv

+0

再生いただきありがとうございます。私はそれをUIKeyboardWillChangeFrameNotificationで変更しました。しかし、それは動作しません。いくつかのサンプルコードを送ってください。 – Mathi

答えて

3

使用UIKeyboardWillChangeFrameNotification通知:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillChangeFrame(_:)), name: UIKeyboardWillChangeFrameNotification, object: nil) 

し、変更を受けるよう:キーボードが表示されたら、この通知は私たちに、キーボードのフレームRECTを与える

func keyboardWillChangeFrame(notification: NSNotification) { 
    if let keyboardFrame = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.CGRectValue() { 
     let keyboardHeight = keyboardFrame.size.height 
     print("keyboard height: \(keyboardHeight)") 
     //do the chnages according ot this height 
    } 
} 

、絵文字への変更、示し/非表示を予測!

+0

あなたの疑問にうっとりするのですか? @マチ – D4ttatraya

関連する問題