2017-03-14 9 views
0
override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(true) 
    keyboardUpNotification() 
    keyboardDownNotification() 
} 

func keyboardUpNotification() { 
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 
    print("keyboard up notification registered") 
} 
func keyboardWillShow(_ notification: Notification) { 
    view.frame.origin.y = 0 - keyboardSize(notification) 
    print("keyboard will show method. \(keyboardSize(notification))") 
} 


func keyboardDownNotification() { 
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil) 
    print("keyboard down notification registered") 
} 
func keyboardWillHide() { 
    print("keyboard will hide method") 
    view.frame.origin.y = 0 
} 

2つの通知(キーボードの上下)を追加します。戻るボタンをタッチすると、キーボードが非表示になります。しかし、keyboardWillHide()メソッドは呼び出していません。何が間違っていたのですか?通知、キーボード隠し

+0

'keyboardWillShow'メソッドも表示します。 –

+0

あなたはテキストの代理人を有効にしていますかfiedl –

+0

keyboardWillShowメソッドも追加しました。 –

答えて

0

のTextFieldデリゲート

class YourViewController: UIViewController, UITextFieldDelegate { 

} 

を確認するためにあなたのViewController 1.Makeまず最初に最初

のTextFieldのデリゲートとして2.Set自己

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.yourTextField.delegate = self 
} 

3.

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    self.yourTextField.resignFirstResponder() 
    return true 
} 
+0

ありがとう!できます! –

+0

@ y-kim:私は助けてくれると嬉しいです:) –

0
を実装

y OUは、デリゲートを設定し、このメソッドをオーバーライドし、UITextFieldのを使用している:

optional func textFieldShouldReturn(_ textField: UITextField) -> Bool 

をリターンキーがヒットしたときに呼び出されます。次に、あなたは

textField.resignFirstResponder() 

と呼び出します。その後、キーボードは閉じられます。

関連する問題