当文本字段中有整数时,按钮不启用/禁用

Posted

技术标签:

【中文标题】当文本字段中有整数时,按钮不启用/禁用【英文标题】:Button not enabling/disabling when textfield has integer in it 【发布时间】:2016-08-12 00:43:58 【问题描述】:

一旦用户将整数值输入到标有“华氏度”的文本字段中,我将尝试激活“转换”按钮。在文本字段中输入整数后,我无法激活文本字段。请参阅下面的代码以供参考

override func viewDidLoad() 
    super.viewDidLoad()
    Fahrenheit.becomeFirstResponder()
    Convert.enabled = false
    Fahrenheit.delegate = self
    Fahrenheit.keyboardType = .DecimalPad

    if Int(Fahrenheit.text!) != nil
        Convert.enabled = true
    else
        Convert.enabled = false

    

【问题讨论】:

【参考方案1】:

您可以从UITextFieldDelegate 协议实现textField(textField:shouldChangeCharactersInRange:replacementString:) 并检查textField 是否包含任何文本:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool 
  let currentText = NSString(string: textField.text ?? "")
  let newText = currentText.stringByReplacingCharactersInRange(range, withString: string)

  convertButton.enabled = !newText.isEmpty
  return true

或者,如果您确定只要文本字段是第一响应者,用户就不会按下按钮,您也可以在textFieldDidEndEditing(textField:) 中进行上述检查:

func textFieldDidEndEditing(textField: UITextField) 
  convertButton.enabled = textField.text?.isEmpty ?? false

您可以使用我创建的test project。

【讨论】:

以上是关于当文本字段中有整数时,按钮不启用/禁用的主要内容,如果未能解决你的问题,请参考以下文章

当textfield为空时禁用按钮等待其他文本字段中的任何更改

禁用iOS键盘中的输入按钮

使用自动完成填充表单时,Javascript 不启用按钮

jquery 基于单选按钮启用/禁用文本框

改进单选按钮的使用以启用/禁用表单字段

当文本字段为空时禁用警报按钮 Swift 3