gpt4 book ai didi

swift - 如果 textField 留空,如何恢复 "clearsOnBeginEditing(true) effect"(在开始编辑时删除旧值)?

转载 作者:可可西里 更新时间:2023-11-01 01:08:27 26 4
gpt4 key购买 nike

我有一个函数触发两个观察者 - keyboardWillShowNotificationKeyboardWillHideNotification,我基本上做的是在编辑时重置文本字段,模拟 的效果clearsOnBeginEditing。但是,如果用户将该字段留空,我希望它在编辑之前返回原始值。这是我的实验代码:

@objc func keyboardWillChange(notification: Notification) {

if notification.name == UIResponder.keyboardWillShowNotification || notification.name == UIResponder.keyboardWillHideNotification {

if textField.isEditing {
let originalValue: String!
originalValue = textField.text!
textField.text = ""
print("content while editing is \(originalValue)")

if notification.name == UIResponder.keyboardWillHideNotification {
print("this is content on end editing \(originalValue)")

if textField!.isEmpty == true {
print("this is nill")
textField.text! = originalValue
} else {
textField.text = textField.text
print("found a value")

}
}
}
}

正确的做法是什么?

最佳答案

您不需要为此实现键盘委托(delegate)。这可以使用 UITextFieldDelegate 方法 textFieldDidBeginEditingtextFieldDidEndEditing 轻松实现。

var orignalValue: String = ""

func textFieldDidBeginEditing(_ textField: UITextField) {
originalValue = textField.text
textField.text = ""
}

func textFieldDidEndEditing(_ textField: UITextField, reason: UITextField.DidEndEditingReason) {
if textField.text?.isEmpty {
textField.text = orignalValue
}
}

注意:您的 View Controller 需要符合 UITextFieldDelegate 并且您的文本字段应将其委托(delegate)设置为 self

关于swift - 如果 textField 留空,如何恢复 "clearsOnBeginEditing(true) effect"(在开始编辑时删除旧值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52292188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com