私は自分自身のクラス内の通知のオブザーバを設定しようとしています。通知センター
私が作ることtextField
か何かをタップすると、これは実際には動作しません、私たちは、たとえば以下のようなものを持っているとしましょう
public class MyClass {
var center: NotificationCenter
public init() {
center = NotificationCenter.default
}
public run() {
center.addObserver(self, selector: #selector(test), name: .UIKeyboardDidShow, object: nil)
}
func test() {
Print("TESTED!")
}
}
と私のViewController
で、
override func viewDidLoad() {
super.viewDidLoad()
let myClass = MyClass()
myClass.run()
}
キーボードアップ。確かに
NotificationCenter
私はMyClass
を使用せずにこれを行う場合に動作、または私は以下のようなオブザーバーとして登録したオブジェクトを変更した場合:
center.addObserver(ViewController.self, selector: #selector(test), name: .UIKeyboardDidShow, object: nil)
、その後、もちろん、私のようにViewController
の内側に私のtest
機能を実装する必要がありますa class function
。
しかし、これは私が望む方法ではありません。なぜこれが機能していないのかを説明するアドバイスやアドバイスはありませんか?
textfield begin delegateを試しましたか?彼らはかなり共通しているので、myClass.run()私は実際に 'textfields'と' keyboard'通知に動作するようにしようとしていないよ – karthikeyan
@karthikeyanは、私は一例として、それらを与えました。したがって、同じ動作の回避策は必要ありません。私は実際に 'NSManagedObjectContextObjectsDidChange'通知を観察しようとしています。 – sCha