在UIText字段中输入数字后如何启用IBAction



我对编程很陌生,需要帮助。

我正在试着做一个简单的计算器。简而言之:有两个插入数字的UITextField。有执行计算的IBAction(按钮Calculate(+还有清除插入文本字段的数据的IBAction(按钮Clear(。启动应用程序后,两个IBAction按钮均被禁用。目标是在插入数字后启用IBAction(按钮Calculate(。如果用户插入任何其他字符然后进行编号,则需要显示一条警告消息(warrningSign2(,告诉用户接受ony编号。

有人能给我一个提示吗?

谢谢!

import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Value: UITextField!
@IBOutlet weak var field1: UITextField!
@IBOutlet weak var field2: UITextField!
@IBOutlet weak var buttonClear: UIButton!
@IBOutlet weak var buttonCalculate: UIButton!
@IBOutlet weak var warrningSign: UITextField!
@IBOutlet weak var warrningSign2: UITextField!
func appLoad () {
buttonClear.isEnabled = false
buttonClear.backgroundColor = .gray
if field1.text == "" || field1.text == "" {
warrningSign.textColor = .red
butonCalculate.isEnabled = false
butonCalculate.backgroundColor = .gray}
}
override func viewDidLoad() {
super.viewDidLoad()
appLoad()
}
@IBAction func calculate(_ sender: Any) {
buttonClear.isEnabled = true
buttonClear.backgroundColor = UIColor(red: 74/255, green: 105/255, blue:187/255, alpha: 1)
Value.text = String(Float(field1.text!)! + Float(field2.text!)!)
}
@IBAction func Clear(_ sender: Any) {
Value.text = "Value"
self.field1.text = nil
self.field2.text = nil
}
}
  1. UITextField(field1field2(Keyboard类型设为Number Pad或仅为可接受的数字类型。

  2. 您可以通过添加以下行来捕获发送到UITextField控件的字符:

    textField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
    
  3. textFieldDidChange委托方法中,您可以根据需要获取文本并进行验证。

我建议更新如下代码,

@IBAction func calculate(_ sender: Any) {
calculateAction()
}
private func calculateAction() {
buttonClear.isEnabled = true
buttonClear.backgroundColor = UIColor(red: 74/255, green: 105/255, blue:187/255, alpha: 1)
Value.text = String(Float(field1.text!)! + Float(field2.text!)!)
}

然后调用textFieldDidChange()中的calculateAction()

最新更新