如果文本字段被快速填写,则启用按钮

Posted

技术标签:

【中文标题】如果文本字段被快速填写,则启用按钮【英文标题】:enable button if textfield is filled in swift 【发布时间】:2015-12-21 10:12:57 【问题描述】:

我的 ios 应用中有几个文本字段,需要禁用一个按钮,直到所有字段都填满。

希望这里有人可以帮助我处理该代码以及它应该去哪里。

这是我尝试过但没有做对的方法。好像没有运行启用按钮命令。

import UIKit

类 ViewController: UIViewController, UITextFieldDelegate

@IBOutlet weak var panelWidthTextField: UITextField!
@IBOutlet weak var panelHightTextField: UITextField!
@IBOutlet weak var panelsWideTextField: UITextField!
@IBOutlet weak var panelsHightTextField: UITextField!
@IBOutlet weak var panelPitchTextField: UITextField!

@IBOutlet weak var calculateButton: UIButton!
@IBOutlet weak var resultWithLabel: UILabel!
@IBOutlet weak var resultHightLabel: UILabel!


// Removes keyboard when touch outside edit field.
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
    view.endEditing(true)
    super.touchesBegan(touches, withEvent: event)



func textFieldDidEndEditing(textField: UITextField) 


    if ((panelWidthTextField.text?.isEmpty != nil) && (panelsWideTextField.text?.isEmpty != nil) && (panelHightTextField.text?.isEmpty != nil) && (panelPitchTextField.text?.isEmpty != nil))
        self.calculateButton.enabled = false
    else
        self.calculateButton.enabled = true
    



override func viewDidLoad() 
    super.viewDidLoad()

    panelWidthTextField.delegate = self
    panelsWideTextField.delegate = self
    panelHightTextField.delegate = self
    panelsHightTextField.delegate = self
    panelPitchTextField.delegate = self






override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


override func viewWillAppear(animated: Bool) 
    // Hideo button




func calculatePressButton(sender: AnyObject) 
    let w = Double(panelWidthTextField.text!)
    let sw = Double(panelsWideTextField.text!)
    let pi = Double(panelPitchTextField.text!)
    let sizew = SizeWidthModel(pw:w!,psw:sw!,ptc:pi!)
    resultWithLabel.text=String(sizew.width())

    let h = Double(panelHightTextField.text!)
    let sh = Double(panelsHightTextField.text!)
    let sizeh = SizeHightModel(ph:h!,psh:sh!,ptc:pi!)
    resultHightLabel.text=String(sizeh.hight())


我开始填写客栈字段时得到的只是这个。 erro

感谢任何帮助。 :-)

【问题讨论】:

void; textFieldDidChange;:(UITextField*)textField 应该是什么?对我来说,这看起来不像是工作代码。 @lightmaster2006 你在找swift吗? @luk2302 我停下来的地方,它不是一个有效的代码,这就是我在这个快速项目上寻求帮助的原因。 但是didChange 函数在那里做什么?您的代码可能使问题难以理解...为文本字段创建一个 IBAction 并按照here 所示连接它们 - 您的长度逻辑似乎正确。 【参考方案1】:

首先将委托设置为所有文本字段,然后实现此方法

func textFieldDidEndEditing(textField: UITextField) 
        if ((panelWidthTextField.text?.isEmpty != nil) && (panelsWideTextField.text?.isEmpty != nil) && (panelHightTextField.text?.isEmpty != nil) && (panelPitchTextField.text?.isEmpty != nil))
            self.calculateButton.enabled = true
        else
            self.calculateButton.enabled = false
        
    

【讨论】:

谢谢,这让我更接近我的需要 :-) 但是你能解释一下如何以及在哪里设置代表吗? @lightmaster2006 panelWidthTextField.delegate = self 并为所有文本字段输入相同的代码。 @ Mukesh Chaudhry 但是我应该把它放在代码的什么地方?请参阅上面的整个代码。 @lightmaster2006 放在 viewDidLoad 方法中。 谢谢,我现在知道了,但它仍然不是我想要的。整个想法是确保在填写所有字段之前未启用按钮。目前它没有做任何事情。

以上是关于如果文本字段被快速填写,则启用按钮的主要内容,如果未能解决你的问题,请参考以下文章

当所有文本字段都填写在uitableviewcell(SWIFT)中时如何启用按钮

仅当所有文本字段都已填写时才在 Swift 中启用按钮

当所有字段都被填写后,启用提交按钮

如何管理被禁用/启用的按钮

在选中单选按钮之前禁用输入字段(HTML)

用户在 Swift 中提交所有文本字段后如何启用按钮