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

标签 swift textfield nsnotifications uiresponder

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

@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 - 如果文本字段留空,如何恢复 "clearsOnBeginEditing(true) effect"(在开始编辑时删除旧值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52292188/

相关文章:

actionscript-3 - AS3 - 删除 StageText 字段的焦点

objective-c - 子类中的 NSNotificationCenter addObserver

ios - 安排应用程序在特定日期/时间启动/进入前台

swift - 如何在不相互连接的 viewController 之间传递信息?

swift - firebase/auth 上用户电话号码的值

swift - 使用通用函数从云记录(或其他外部源)填充对象

ios - Swift 2/XCode 7 中惰性变量中的字符串文字 [无法转换字符串类型的值 ...]

SwiftUI 可编辑导航标题

date - 日期的 Flutter TextField 输入验证

swift - 键盘问题上方的文本字段