Рассмотрим следующий код:
protocol A {
func doA()
}
extension A {
func registerForNotification() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardDidShow:"), name: UIKeyboardDidShowNotification, object: nil)
}
func keyboardDidShow(notification: NSNotification) {
}
}
Теперь рассмотрим подкласс UIViewController, который реализует A:
class AController: UIViewController, A {
override func viewDidLoad() {
super.viewDidLoad()
self.registerForNotification()
triggerKeyboard()
}
func triggerKeyboard() {
// Some code that make key board appear
}
func doA() {
}
}
Но на удивление это происходит с ошибкой:
keyboardDidShow:]: непризнанный селектор, отправленный в экземпляр 0x7fc97adc3c60
Так должен ли я реализовать наблюдателя в самом контроллере представления? Не может ли он остаться в продлении?
Следующие вещи уже пробовали.
создание протокола A класса. Добавление клавиатурыDidShow к самому протоколу в качестве сигнатуры.
protocol A:class {
func doA()
func keyboardDidShow(notification: NSNotification)
}