我对编程很陌生,需要帮助。
我正在试着做一个简单的计算器。简而言之:有两个插入数字的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
}
}
-
将
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!)!)
}
然后调用textFieldDidChange()
中的calculateAction()
。