2017-05-19 25 views
-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 
     } 

    } 
} 

我想知道我怎樣才能避免子視圖下來,當我點擊文本框,而子視圖已經啓動。

回答

0

當鍵盤關閉時,只需將y視圖的原點設置爲零。 當鍵盤打開時點擊其他文本字段時,這是。 FUNC keyboardWillHide(通知:NSNotification){

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 
     } 

    } 

} 

    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { 
     if loginView.frame.origin.y != 0 { 
      let height = keyboardSize.height 
      self.loginView.frame.origin.y = 0 
     } 

    } 
} 
+0

我不想動子視圖高達self.view的頂端,我只是想動子視圖幅度高達鍵盤的高度。謝謝,但是你的建議沒有像我期望的那樣工作,和我的一樣。 – mehmeet43

+0

我的代碼將按照鍵盤的高度將視圖向上移動。 默認情況下,你的鍵盤的y原點將爲0,當鍵盤出現時,假設高度爲100,所以你的視圖應該放置在-100 y原點,所以我的代碼也是這樣。 無論他最後的起源是什麼,我的代碼都會將視圖移動到100點以上。但是你提出的觀點是從他之前的y位置向上移動100個點。 所以我只是刪除+ =與( - 高度)它不會減去y,它只會否定你的價值。 –

相關問題