-2
我在子視圖中有兩個文本框,並且當任何文本框在子視圖和鍵盤出現時單擊時,我試圖移動子視圖。問題是subview下移子視圖時,我點擊第二個文本框。當我觸摸除文本框之外的任何視圖時,它應該隱藏。將子視圖向上移動,當子視圖中的文本字段顯示在鍵盤上
我的兩個textfield和subview的定義;
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var loginView: UIView!
在viewDidLoad中的代碼
NotificationCenter.default.addObserver(self, selector:#selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector:#selector(keyboardWillHide), name: .UIKeyboardWillShow, object: nil)
和另外兩個功能,這顯示和隱藏鍵盤
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if loginView.frame.origin.y == 0{
let height = keyboardSize.height
self.loginView.frame.origin.y += height
}
}
}
func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if loginView.frame.origin.y != 0 {
let height = keyboardSize.height
self.loginView.frame.origin.y -= height
}
}
}
我想知道我怎樣才能避免子視圖下來,當我點擊文本框,而子視圖已經啓動。
我不想動子視圖高達self.view的頂端,我只是想動子視圖幅度高達鍵盤的高度。謝謝,但是你的建議沒有像我期望的那樣工作,和我的一樣。 – mehmeet43
我的代碼將按照鍵盤的高度將視圖向上移動。 默認情況下,你的鍵盤的y原點將爲0,當鍵盤出現時,假設高度爲100,所以你的視圖應該放置在-100 y原點,所以我的代碼也是這樣。 無論他最後的起源是什麼,我的代碼都會將視圖移動到100點以上。但是你提出的觀點是從他之前的y位置向上移動100個點。 所以我只是刪除+ =與( - 高度)它不會減去y,它只會否定你的價值。 –