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 以获取有关协议和授权的更多信息。
问题是我只有一个文本字段,而且一直没有放弃焦点。我添加了另一个文本字段以将焦点转移到 ,现在当我将焦点放回感兴趣的文本字段时,它确实清晰了。很简单,必须转移焦点才能使该方法起作用。
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 以获取有关协议和授权的更多信息。
问题是我只有一个文本字段,而且一直没有放弃焦点。我添加了另一个文本字段以将焦点转移到 ,现在当我将焦点放回感兴趣的文本字段时,它确实清晰了。很简单,必须转移焦点才能使该方法起作用。