- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个函数触发两个观察者 - keyboardWillShowNotification
和 KeyboardWillHideNotification
,我基本上做的是在编辑时重置文本字段,模拟 的效果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
方法 textFieldDidBeginEditing
和 textFieldDidEndEditing
轻松实现。
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/
override func viewDidLoad() { super.viewDidLoad() self.enterNumberTextField.clearsOnBe
我正在 iOS 8 上构建一个应用程序。我有一个登录屏幕,用户可以在其中输入用户名和密码。当他们输入了有效的用户名和密码后,他们就可以进入下一个屏幕(启用一个按钮,允许他们前进)。 我编写的逻辑告诉按
我有一个函数触发两个观察者 - keyboardWillShowNotification 和 KeyboardWillHideNotification,我基本上做的是在编辑时重置文本字段,模拟 的效果
我是一名优秀的程序员,十分优秀!