2017-10-21 24 views
0

いくつかのテキストフィールドは、ユーザーの編集TextField.Andが、私はそれがMove view with keyboard using Swift移動ビュー。(キーボードのサイズ&&ビュー背面に移動問題)

私のコアコードを参照しようとすると、ビューを上に移動したいUIView.Iにあります。以下の通りです:keyboard.Thenは後に黒のフィールドトップが存在します、キーボードがショーでkeyboardSize.heightよりも大きい非表示に

1. keyboardSize.height:

//MARK: Properties 
@IBOutlet weak var userAccountTextField: UITextField! 
@IBOutlet weak var passwordTextField: UITextField! 
@IBOutlet weak var confirmPasswordTextField: UITextField! 
@IBOutlet weak var emailTextField: UITextField! 
@IBOutlet weak var phoneTextField: UITextField! 

//MARK: Callback 
override func viewDidLoad() { 
    super.viewDidLoad() 
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: self.view.window) 
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: self.view.window) 
} 

func keyboardWillShow(notification: NSNotification) { 
     if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size { 
      if self.view.frame.origin.y == 0{ 
       //self.view.frame.origin.y -= keyboardSize.height 
       self.view.frame.origin.y -= 150 
      } 
     } 
    } 

func keyboardWillHide(notification: NSNotification) { 
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size { 
     if self.view.frame.origin.y != 0{ 
      //self.view.frame.origin.y += keyboardSize.height 
      self.view.frame.origin.y += 150 
     } 
    } 

} 

は二つの問題がありますキーボード隠す。だから私は定数を使う必要があります。

2.キーボードの表示後にビューが上に移動すると、それは良いです。しかし、文字列を入力するか、他のTextFiled.Itをクリックするとビューが下に移動します。これらのTextFieldをScrollView.Butに配置すれば、それは理由です。下の画像のように: enter image description here

ご協力いただければ幸いです。

答えて

0

あなた「のviewDidLoad」メソッドは、エラーが含まれている、あなたが追加するとオブザーバを削除しないで、あなたは「viewWillDisappear」でそれを削除する必要がいる

override func viewDidLoad() { 
    super.viewDidLoad()    
    NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 
    NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)  
} 
+0

私は、これらのfactly.Iは単なる過去なかったでしたそれは私の質問にとって重要ではないということを確認してください。ありがとう。 – WangYang

関連する問題