Как включить IBAction после ввода чисел в поле UIText - PullRequest
0 голосов
/ 06 марта 2020

Я новичок в программировании, и мне нужна помощь.

Я пытаюсь построить простой калькулятор. В двух словах: Есть два 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
    }
}

1 Ответ

0 голосов
/ 06 марта 2020
  1. Сделать UITextField (field1 и field2) 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!)!)
  }

, а затем вызвать calculateAction() в textFieldDidChange().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...