Как вернуться в предыдущее текстовое поле, если все текстовое поле пусто? - PullRequest
0 голосов
/ 12 февраля 2019

[если все текстовое поле заполнено, оно легко вернется, но если все текстовое поле пусто, и я нажму на последнее текстовое поле, тогда я хочу вернуться к предыдущему текстовому полю и так далее, как я достиг этого, пожалуйста, помогите мне]

import UIKit
    class OTPVC: CommonViewController,UITextFieldDelegate   {
    @IBOutlet weak var aboutOtp: UIView!
    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var bottomConstraint: NSLayoutConstraint!
    @IBOutlet weak var firstOtptxt: UITextField!

        @IBOutlet weak var secondOtptxt: UITextField!

        @IBOutlet weak var thirdOtptxt: UITextField!

        @IBOutlet weak var fourthOtptxt: UITextField!


    override func viewDidLoad() {
        super.viewDidLoad()
           setUpView()

        firstOtptxt.delegate = self
        secondOtptxt.delegate = self
        thirdOtptxt.delegate  = self
        fourthOtptxt.delegate = self

                    }
    private func setUpView()      {
        aboutOtp.makeCornerRadius(10)
           }


        func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
            if ((textField.text?.count)!) < 1 && (string.count > 0) {
                if textField == firstOtptxt{
                    secondOtptxt.becomeFirstResponder()
                }
                if textField == secondOtptxt {
                    thirdOtptxt.becomeFirstResponder()
                }
                if textField == thirdOtptxt {
                    fourthOtptxt.becomeFirstResponder()
                }
                if textField == fourthOtptxt {
                    fourthOtptxt.becomeFirstResponder()
                }
                textField.text = string
                return false
            } else if (((textField.text?.count)!) >= 1) && (string.count == 0) {
                if textField == secondOtptxt {
                    firstOtptxt.becomeFirstResponder()
                }
                if textField == thirdOtptxt {
                    secondOtptxt.becomeFirstResponder()
                }
                if textField == fourthOtptxt {
                    thirdOtptxt.becomeFirstResponder()
                }
                if textField == firstOtptxt {
                    firstOtptxt.becomeFirstResponder()
                }
                textField.text = string
                return false
            }
            else if ((textField.text?.count)!) >= 1 {
                textField.text = string
                return false
            }
            return true
               }

               }
[if all textfield is fill it will easily come back but if all textfield is empty and i click on last textfield then i want to come back to the previous textfield and so on how i achieved this please help me ]

[если все текстовое поле заполнено, оно легко вернется, но если все текстовое поле пусто, и я нажму на последнее текстовое поле, тогда я хочу вернуться к предыдущему текстовому полю и так далее, как я достиг этого, пожалуйста, помогите мне]

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019
protocol MyTextFieldDelegate: UITextFieldDelegate {
    func textField(_ textField: UITextField, didDeleteBackwardAnd wasEmpty: Bool)
                            }
class MyTextField: UITextField     {
    override func deleteBackward() {
        // see if text was empty
        let wasEmpty = text == nil || text! == ""
        // then perform normal behavior
        super.deleteBackward()
        // now, notify delegate (if existent)
        (delegate as? MyTextFieldDelegate)?.textField(self, didDeleteBackwardAnd: wasEmpty)
            }
            }

[просто поместите метод делегата и он отлично работает в моем проекте yippy]

0 голосов
/ 12 февраля 2019

есть хитрость, вы можете иметь пробел в ваших текстовых полях, так что эта проблема будет решена.

кстати, я использовал этот метод в своем собственном компонентном проекте, вы можетеузнать, как это сделать

вот ссылка: OTPTextView

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