2017-01-18 13 views
4

が、私は関数を実行しようとすると、キーボードショーと消え、次のコードを持っています隠す:NSNotificationCenterスウィフトキーボードショーで3.0と

let notificationCenter = NotificationCenter.default 
notificationCenter.addObserver(self, selector: #selector(ViewController.keyBoardUp(Notification :)), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 

そしてkeyBoardUp以下の機能:

func keyBoardUp(Notification: NSNotification){ 
    print("HELLO") 
} 

をただし、キーボードが表示されても、この機能はコンソールには表示されません。ヘルプは大幅に

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardNotification(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil) 
} 

で、あなたの関数で

+0

に#selector(ViewController.keyBoardUp(通知:)) ''と機能に変更セレクタ 'FUNC keyBoardUp(通知:通知) { print( "HELLO") } –

+1

[Swift 3 NSNotificationCenter Keyboardwillshow/hide]の可能な複製(http://stackoverflow.com/questions/37825327/swift-3-nsnotificationcenter-keyboardwillshow-hide) –

+0

スイフト3関数でコンパイルエラーが発生してはいけませんか? – Rikh

答えて

5

セット、キーボード通知観察者が

func keyboardNotification(notification: NSNotification) { 
    print("keyboard displayed!!") 
} 

それを扱ういただければ幸いこれはあなたを助けることを願っています。

13

スウィフト3:のviewDidLoad FUNC

オーバーライド(){

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) 

} 

func keyboardWillShow(notification: NSNotification) { 

    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { 
     print("HELLO") 
     if self.view.frame.origin.y == 0{ 
      self.view.frame.origin.y -= keyboardSize.height 
     } 
    } 

} 

func keyboardWillHide(notification: NSNotification) { 

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

このコードは失敗し、キーボードがアクティブになり、anytingを入力し、辞任せずにiPhoneのロックボタンを押して、少し後にあなたのiPhoneのロックを解除すると、あなたのビューは可視になりません。 –

+0

keyboardSize.heightをハードコードすることによってその部分の代わりにInt – boywithaxe

+0

を入力することができますUIKeyboardFrameEndUserInfoKeyを使用して正しい高さを取得し、iPad上には別の場所がありますキーボードの高さ(ハードウェアキーボードが付いていない場合) - ハードコーディングが問題の原因になります。 – JKvr

関連する問題