Swift - TextField.clearsOnBeginEditing 有问题

Swift - Trouble with TextField.clearsOnBeginEditing

override func viewDidLoad() {
    super.viewDidLoad()       
    self.enterNumberTextField.clearsOnBeginEditing = true  
}

将此 bool 设置为 true 不会在以后的代码中持续存在,并且我不会在我的任何代码中重置它。当用户将光标放在其中时,设置 bool 不会强制清除文本框。我检查了 bool 的值,在第一次通过代码时它是真的,尽管文本框没有清除。在后续通过代码时,bool 被重置为 false。不是我的代码。

我也试过将这行代码放入 IBAction 函数中,所有的处理都在这个程序中完成。同样的结果。不清除文本框,并在所有工作已完成的 if {} 内重置为 false。

有人能告诉我为什么会这样吗,是否应该在某个地方将此 bool 设置为 true 以便它在整个程序执行过程中持续存在。

来自 Swift 文档:

Even if this property is set to true, the text field delegate can override this behavior by returning false from its textFieldShouldClear: method.

您的观点是否遵守 UITextFieldDelegate 协议?你实现了 textFieldShouldClear 方法吗?这听起来像是您问题的根源。

编辑:

如果你这样做会发生什么:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        textField.clearsOnBeginEditing = true
        textField.delegate = self
    }

    func textFieldShouldClear(textField: UITextField) -> Bool {
        return true
    }
}

即在顶部添加UITextFieldDelegate协议,然后实现textFieldShouldClear所以它总是returnstrue。这可能不是您最终想要的,但它可能会解决问题。查看 Swift documentation 以获取有关协议和授权的更多信息。

问题是我只有一个文本字段,而且一直没有放弃焦点。我添加了另一个文本字段以将焦点转移到 ,现在当我将焦点放回感兴趣的文本字段时,它确实清晰了。很简单,必须转移焦点才能使该方法起作用。