Получить запись данных в UITextField - PullRequest
1 голос
/ 22 марта 2020

Я создаю форму для проведения измерений, и поэтому у меня есть несколько текстовых файлов. Мне нужно иметь возможность получить то, что пользователь пишет в textField. Я пробовал несколько методов, но я не могу найти способ добраться туда. Можете ли вы дать мне руководство?

Вот мой код:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    var myTextField = UITextField()


    @IBOutlet weak var wristFlex: UITextField!
    @IBOutlet weak var wristExtension: UITextField!
    @IBOutlet weak var firstPhalanx: UITextField!
    @IBOutlet weak var secondPhalanx: UITextField!
    @IBOutlet weak var thirdPhalanx: UITextField!
    @IBOutlet weak var forearmLenght: UITextField!
    @IBOutlet weak var handLenght: UITextField!
    @IBOutlet weak var fingerLenght: UITextField!
    @IBOutlet weak var forearmCirecumference: UITextField!
    @IBOutlet weak var wristCirecumference: UITextField!
    @IBOutlet weak var fingerCirecumference: UITextField!
    @IBOutlet weak var handCirecumference: UITextField!
    @IBOutlet weak var validatedPressed: UIButton!




    override func viewDidLoad() {
        super.viewDidLoad()
        wristFlex.delegate = self
        wristExtension.delegate = self
        firstPhalanx.delegate = self
        secondPhalanx.delegate = self
        thirdPhalanx.delegate = self
        forearmLenght.delegate = self
        handLenght.delegate = self
        fingerLenght.delegate = self
        forearmCirecumference.delegate = self
        wristCirecumference.delegate = self
        fingerCirecumference.delegate = self
        handCirecumference.delegate = self

        NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)

        NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)

        NotificationCenter.default.addObserver(self, selector: #selector(textFieldTextDidChange), name: UITextField.textDidChangeNotification, object: nil)

    }

// Notifications:

      @objc  func textFieldTextDidChange(ncParam: NSNotification) {

        print("UItextFieldTextDidChange = \(ncParam)")

    }

    @objc func keyboardWillHide(notification: NSNotification) {
      // move back the root view origin to zero
      self.view.frame.origin.y = 0
    }

    @objc func keyboardWillShow(notification: NSNotification) {

        guard let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else {
           // if keyboard size is not available for some reason, dont do anything
           return
        }

      // move the root view up by the distance of keyboard height
      self.view.frame.origin.y = 0 - keyboardSize.height
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        view.endEditing(true)
    }


    @IBAction func validatedPressed(_ sender: AnyObject) {
        if wristFlex.text == "" || wristExtension.text == "" || firstPhalanx.text == "" || secondPhalanx.text == "" || thirdPhalanx.text == "" || forearmLenght.text == "" || handLenght.text == "" || fingerLenght.text == "" || forearmCirecumference.text == "" || wristCirecumference.text == "" || fingerCirecumference.text == "" || handCirecumference.text == "" {
            let alertController = UIAlertController(title: "Erreur", message: " Tous les champs ne sont pas remplis", preferredStyle: .alert)
            let alertAction = UIAlertAction(title: "Ok", style: .default, handler: nil)

            alertController.addAction(alertAction)
            present(alertController, animated: true, completion: nil)

            return
        }
        dismiss(animated: true, completion: nil)
    }
    internal func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        print("")
        return true
    }
}

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Вы можете использовать метод textFieldDidEndEditing из UITextfieldDelegate. Этот метод вызывается, когда пользователь завершает свою запись. Затем вы можете получить доступ к переменным с помощью textField.text

Пример ниже представляет собой реализацию для случая, когда у вас есть только одно текстовое поле. В вашем случае вам нужно различать guish между различными текстовыми полями.

func textFieldDidEndEditing(_ textField: UITextField,
                               reason: UITextField.DidEndEditingReason){
       if let value = textField.text  {
            print(value)
       }
   }

Надеюсь, это поможет!

0 голосов
/ 22 марта 2020

Чтобы получить то, что пользователь пишет в UITextFields, вы можете получить доступ к его текстовым свойствам с помощью чего-то вроде textField.text.

Более конкретно, в вашем случае может работать что-то вроде wristFlex.text или thirdPhalanx.text, и так далее для всех ваших полей UITextFields.

...