我对编程很陌生,需要帮助。
我正在尝试构建一个简单的计算器。简而言之:在数字中插入两个UITextField
。有IBAction
(buttonCalculate)执行计算+还有另一个IBAction
(buttonClear)清除插入文本字段中的数据。启动应用程序后,两个IBAction
按钮均被禁用。目标是在插入数字后启用IBAction
(buttonCalculate)。如果用户插入其他任何字符,然后输入数字,则需要显示一条警告消息(warrningSign2),告诉用户仅接受一个数字。
有人可以给我小费/提示我应该如何进行吗?
谢谢!
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
}
}
将UITextField
(field1
和field2
)Keyboard
类型更改为Number Pad
或仅接受数字类型。
您可以通过添加以下行来捕获发送到UITextField
控件的字符:
textField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
在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!)!)
}
然后在calculateAction()
中调用textFieldDidChange()
。