簡體   English   中英

將觀察者添加到UITextfield。 從不開火?

[英]Adding an observer to a UITextfield. never fires?

Swift 4.0 iOS 11.x

添加了一些UITextfields,成為第一個響應者,而不是這些觀察者。 但是他們似乎從來沒有開槍? 我在這里想念什么?

@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var hintTextField: UITextField!

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    listenToTextFields()
}

private func listenToTextFields() {
    let center = NotificationCenter.default
    let queue = OperationQueue.main
    namedObserver = center.addObserver(forName: NSNotification.Name.UITextViewTextDidChange, object: nameTextField, queue: queue) { (notification) in
        print("You edited \(self.nameTextField.text)")
    }
    hintObserver = center.addObserver(forName: NSNotification.Name.UITextViewTextDidChange, object: hintTextField, queue: queue) { (notification) in
        print("You edited \(self.hintTextField.text)")
    }
}

當我在nameTextField或hintTextField中輸入文本時,沒有任何內容打印到控制台。 試圖使該類成為UITextFieldDelegate,並確實設置了文本字段委托,但是仍然沒有通知來嗎?

嘗試使用XCode UI而不是通過代碼進行操作。 參見下圖。

在此處輸入圖片說明

好的,通過使用其他通知使它正常工作,使它似乎可以正常工作; 但目前肯定不會這樣做。

private func listenToTextFields() {
    let center = NotificationCenter.default
    let queue = OperationQueue.main
    let alert2Monitor = NSNotification.Name.UITextFieldTextDidEndEditing
    namedObserver = center.addObserver(forName: alert2Monitor, object: nameTextField, queue: queue) { (notification) in
      self.setWayPoint.didSetVariable(image: nil, name: self.nameTextField.text, hint: self.hintTextField.text)
    }
    hintObserver = center.addObserver(forName: alert2Monitor, object: hintTextField, queue: queue) { (notification) in
      self.setWayPoint.didSetVariable(image: nil, name: self.nameTextField.text, hint: self.hintTextField.text)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM