0

斯威夫特 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,并确实设置了文本字段委托,但仍然没有通知向我发送?

4

2 回答 2

1

用 XCode UI 试试,而不是通过代码来做。见下图。

在此处输入图像描述

于 2018-05-31T11:24:53.180 回答
0

Ok, Got this to work, by using a different notification, used to work it seems; but certainly not doing so at this point.

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)
    }
}
于 2018-06-01T12:03:38.590 回答