0
我已經在我的屏幕得到了總共3個文本框,我試圖將我的觀點了當鍵盤彈出通過調整y座標,使用通知,代碼看起來像這樣在Xcode和Swift中管理隱藏/顯示多個鍵盤?
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
subscribeToKeyboardNotifications()
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
unsubscribeFromKeyboardNotifications()
}
func keyboardWillShow(notification: NSNotification) {
view.frame.origin.y -= getKeyboardHeight(notification)
}
func keyboardWillHide(notification: NSNotification) {
view.frame.origin.y += getKeyboardHeight(notification)
}
func getKeyboardHeight(notification: NSNotification) -> CGFloat {
let userInfo = notification.userInfo
let keyboardSize = userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue // of CGRect
return keyboardSize.CGRectValue().height
}
func subscribeToKeyboardNotifications() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:" , name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:" , name: UIKeyboardWillHideNotification, object: nil)
}
據工作正確的部分是,當我點擊教科書時,彈出鍵盤並向上移動屏幕,當我點擊或按下返回鍵時,它會將其向下移動。
但是,有一種情況下,它會中斷。比方說,我點擊文本框,它打開鍵盤,然後我點擊另一個文本框。 keyboardWillShow方法被再次調用,屏幕上出現黑色補丁。爲什麼keybaordWillShow方法在沒有keyboardWillHide方法的情況下再次調用,在這種情況下(當我點擊textbox1後直接點擊textbox2)?
我認爲問題出在你處理觀察者的方式.. – Do2