如何根据 Swift 中的条件更改 textField 用户交互
How to change textField user-interaction according to condition in Swift
我有两个名为 toDateTextField 和 fromDateTextField 的文本字段
我的需要是 if fromDateTextField.text?.isEmpty ?? true
然后如果我点击 toDateTextField 然后它必须显示 toast 并且不应该打开 datepicker
使用此代码,如果我最初点击 toDateTextField
,则日期选择器不会打开,但不会显示 toast。如果我点击 toDateTextField
,最初如何显示 toast
如果我最初点击 fromDateTextField
然后它显示 toast 消息然后日期选择器出现..如何解决这两个问题
override func viewDidLoad() {
super.viewDidLoad()
toDateTextField.isEnabled = false
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if fromDateTextField.text?.isEmpty ?? true {
toDateTextField.isEnabled = false
self.view.makeToast("Please select from date")
} else {
toDateTextField.isEnabled = true
}
}
//this is datpicker done button
@objc func doneButtonPressed(_ sender: UIBarButtonItem) {
toDateTextField.isEnabled = true
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let arr = [fromDateTextField,toDateTextField]
let current = arr[sender.tag]
if let datePicker = current?.inputView as? UIDatePicker {
current?.text = dateFormatter.string(from: datePicker.date)
current?.resignFirstResponder()
}
}
如何解决这两个问题..请帮忙
如果您最初点击 toDateTextField
不会发生任何事情,因为您已在 viewDidLoad
方法中将其 enabled
属性 设置为 false
。
而且你一开始修改就会得到toast消息fromDateTextField
因为它一开始是空的
要解决这个问题,您需要在 textFieldDidBeginEditing
中做一些修改,以便它检测当前正在更改的文本字段并相应地执行您想要的操作。
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == toDateTextField {
if fromDateTextField.text?.isEmpty ?? true {
self.view.makeToast("Please select from date")
toDateTextField.isEnabled = false
}
}
}
要启用 toDateTextField
,您需要添加以下内容:
func textFieldDidEndEditing(_ textField: UITextField) {
if textField == fromDateTextField {
toDateTextField.isEnabled = true
}
}
注意:您需要在 viewDidLoad
中将两个文本字段的 delegate
设置为 self 才能使此解决方案正常工作。
我有两个名为 toDateTextField 和 fromDateTextField 的文本字段
我的需要是 if fromDateTextField.text?.isEmpty ?? true
然后如果我点击 toDateTextField 然后它必须显示 toast 并且不应该打开 datepicker
使用此代码,如果我最初点击 toDateTextField
,则日期选择器不会打开,但不会显示 toast。如果我点击 toDateTextField
,最初如何显示 toast
如果我最初点击 fromDateTextField
然后它显示 toast 消息然后日期选择器出现..如何解决这两个问题
override func viewDidLoad() {
super.viewDidLoad()
toDateTextField.isEnabled = false
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if fromDateTextField.text?.isEmpty ?? true {
toDateTextField.isEnabled = false
self.view.makeToast("Please select from date")
} else {
toDateTextField.isEnabled = true
}
}
//this is datpicker done button
@objc func doneButtonPressed(_ sender: UIBarButtonItem) {
toDateTextField.isEnabled = true
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let arr = [fromDateTextField,toDateTextField]
let current = arr[sender.tag]
if let datePicker = current?.inputView as? UIDatePicker {
current?.text = dateFormatter.string(from: datePicker.date)
current?.resignFirstResponder()
}
}
如何解决这两个问题..请帮忙
如果您最初点击 toDateTextField
不会发生任何事情,因为您已在 viewDidLoad
方法中将其 enabled
属性 设置为 false
。
而且你一开始修改就会得到toast消息fromDateTextField
因为它一开始是空的
要解决这个问题,您需要在 textFieldDidBeginEditing
中做一些修改,以便它检测当前正在更改的文本字段并相应地执行您想要的操作。
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == toDateTextField {
if fromDateTextField.text?.isEmpty ?? true {
self.view.makeToast("Please select from date")
toDateTextField.isEnabled = false
}
}
}
要启用 toDateTextField
,您需要添加以下内容:
func textFieldDidEndEditing(_ textField: UITextField) {
if textField == fromDateTextField {
toDateTextField.isEnabled = true
}
}
注意:您需要在 viewDidLoad
中将两个文本字段的 delegate
设置为 self 才能使此解决方案正常工作。