2015-08-17 5 views
2

Я все еще в процессе (быстрого) обучения, поэтому, пожалуйста, простите любые ужасные промахи с моей стороны. Я просмотрел все возможные вопросы в этом контексте и пробовал все разные предложения, идеи и перестановки синтаксиса, который мог найти. Пока не повезло. Ниже код должен просто позволить мне реагировать на изменения состояния клавиатуры:swift: наблюдатель на клавиатуре не работает

class ViewController: UIViewController { 

override func viewWillAppear(animated: Bool) { 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keybShow:", 
     name: UIKeyboardWillShowNotification, object: nil) 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keybHide:", 
     name: UIKeyboardWillHideNotification, object: nil) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    func keybShow(notification: NSNotification) { 
     println("kb show") 
    } 


    func keybHide(notification: NSNotification) { 
     println("kb hide") 
    } 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func viewWillDisappear(animated: Bool) { 
    NSNotificationCenter.defaultCenter().removeObserver(self) 
} 

Но он падает каждый раз, когда с

Нагрузочным приложением из-за неперехваченное исключение «NSInvalidArgumentException», причина: «- [moreKeybNotifications. ViewController keybShow]: непризнанные селектор направил к экземпляру 0x7fa130710e60' »

при касании/щелкать текстовое поле

.

Я даже прокомментировал 2 функции keybShow и keybHide в какой-то момент, тот же самый сбой все же произошел. Любой вход был бы признателен!

+0

Просьба также войти в привычку вызова супер в '' viewWillAppear' и viewWillDisappear' (и 'did' эквивалентов по этому вопросу). –

+0

Да, извините, что Project/code был только для проверки этой проблемы, я обычно делаю это ... – theaxeH

ответ

3

Вы определили keybShow и keybHide как локальные функции в пределах viewDidLoad. Поместите их в область class ViewController.

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

func keybShow(notification: NSNotification) { 
    println("kb show") 
} 


func keybHide(notification: NSNotification) { 
    println("kb hide") 
} 
+0

Большое спасибо, что сделал трюк !! – theaxeH

0
NotificationCenter.default.addObserver(self, selector:#selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil) 

    NotificationCenter.default.addObserver(self, selector:#selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil) 
Смежные вопросы