Ios 当UITextfield数据为空或已填充时,如何禁用/启用按钮?
这是我的功能。正如您在上面看到的,当文本字段为空(或零)且按钮被禁用时,我能够在控制台中接收消息。然而,当数据输入到我的文本字段时,我没有得到响应。如果有人能帮我解决这个或类似的问题,我将不胜感激Ios 当UITextfield数据为空或已填充时,如何禁用/启用按钮?,ios,swift,Ios,Swift,这是我的功能。正如您在上面看到的,当文本字段为空(或零)且按钮被禁用时,我能够在控制台中接收消息。然而,当数据输入到我的文本字段时,我没有得到响应。如果有人能帮我解决这个或类似的问题,我将不胜感激 func logicDataCheck() { let textfield: Array<Bool?> = [lastNameTextField.text?.isEmpty, phoneNumberTextField.text?.isEmpty, firstNameTextFiel
func logicDataCheck() {
let textfield: Array<Bool?> = [lastNameTextField.text?.isEmpty, phoneNumberTextField.text?.isEmpty, firstNameTextField.text?.isEmpty]
if (textfield[0]! || textfield [1]! || textfield [2]!)
{
print("Textfield is empty")
continue_Button.isEnabled = false
continue_Button.alpha = 0.5
}
else
{
if (textfield[0]! || textfield [1]! || textfield [2]!) {
print("Textfield is full")
continue_Button.isEnabled = true
continue_Button.alpha = 1
}
}
}
func logicDataCheck(){
让textfield:Array=[lastNameTextField.text?.isEmpty,phoneNumberTextField.text?.isEmpty,firstNameTextField.text?.isEmpty]
如果(文本字段[0]!| |文本字段[1]!| |文本字段[2]!)
{
打印(“文本字段为空”)
continue_Button.isEnabled=错误
继续按钮。alpha=0.5
}
其他的
{
如果(文本字段[0]!| |文本字段[1]!| |文本字段[2]!){
打印(“文本字段已满”)
continue_Button.isEnabled=真
继续按钮。alpha=1
}
}
}
在您的视图DIDLOAD
中,您可以添加以下行:
configureTextFields()
// you'll need to call updateTextField() when the view loads the first time.
// After the configureTextFields() adds targets, it'll get called when editing changes
updateTextField()
另外,添加以下方法:
func configureTextFields() {
// create an array of textfields
let textFieldArray = [firstNameTextField, lastNameTextField, phoneNumberTextField]
// configure them...
for textField in textFieldArray {
// make sure you set the delegate to be self
textField?.delegate = self
// add a target to them
textField?.addTarget(self, action: #selector(ViewController.updateTextField), for: .editingChanged)
}
}
// this is the target that gets called when editing changes
func updateTextField() {
// create an array of textFields
let textFields = [firstNameTextField, lastNameTextField, phoneNumberTextField]
// create a bool to test if a textField is blank in the textFields array
let oneOfTheTextFieldsIsBlank = textFields.contains(where: {($0?.text ?? "").isEmpty})
if oneOfTheTextFieldsIsBlank {
continueButton.isEnabled = false
continueButton.alpha = 0.5
} else {
continueButton.isEnabled = true
continueButton.alpha = 1.0
}
}
您需要使ViewController采用UITextFieldDelegate协议。您可以这样做:
class ViewController: UIViewController, UITextFieldDelegate {
// the code inside your view controller
}
这里有一个链接,指向一个试试这个
func logicDataCheck() {
let textfield: Array<Bool> = [lastNameTextField.text?.isEmpty, phoneNumberTextField.text?.isEmpty, firstNameTextField.text?.isEmpty]
if (textfield[0] || textfield [1] || textfield [2])
{
print("Textfield is empty")
continue_Button.isEnabled = false
continue_Button.alpha = 0.5
}
else
{
print("Textfield is full")
continue_Button.isEnabled = true
continue_Button.alpha = 1
}
}
func logicDataCheck(){
让textfield:Array=[lastNameTextField.text?.isEmpty,phoneNumberTextField.text?.isEmpty,firstNameTextField.text?.isEmpty]
if(textfield[0]| | textfield[1]| | textfield[2])
{
打印(“文本字段为空”)
continue_Button.isEnabled=错误
继续按钮。alpha=0.5
}
其他的
{
打印(“文本字段已满”)
continue_Button.isEnabled=真
继续按钮。alpha=1
}
}
请注意,emptyCheck
实际上是一个可选字符串数组,当其中一个字符串为nil
时,您应该禁用该按钮。因此,检查应该是{$0!=false}
。此外,如果您定义一个文本字段数组,例如let textFields:[UITextField]=[firstNameTextField,…]
然后let emptyCheck=textFields.contains(其中:{($0.text??).isEmpty})
@Sulthan Awesome feedback。我根据您的输入进行了更新。@KyleC.Beachem答案已更新。如果答案对你有效,请点击复选标记接受答案。刚刚接受,谢谢@Adrian