Значение поля UIText увеличивается приращением при нажатии 6,7,8,9 и ограничивает редактирование - PullRequest
0 голосов
/ 24 февраля 2019

UITextField отвечает неправильно.Я не могу удалить текущее значение, но оно изменится, когда я нажму цифры 6,7,8,9 на клавиатуре.Методы для этого текстового поля устанавливаются с использованием делегата UITextfield.Это работает, когда я блокирую раздел кода в shouldChangeCharactersIn.Мой вопрос: почему код ограничивает ввод текстового поля и отвечает только тогда, когда на клавиатуре нажимаются определенные цифры?

func textFieldDidEndEditing(_ textField: UITextField) {
    let selectedLender = mortgageLender.text
    let selectedTerm = mortgageTerm.text


        let matchedLender = Data.currentRateData.first(where: {$0.financialInstitution == selectedLender})

        let sixMonthRate = matchedLender?.sixMonths
        let oneYearRate = matchedLender?.oneYear
        let twoYearRate = matchedLender?.twoYear
        let threeYearRate = matchedLender?.threeYear
        let fourYearRate = matchedLender?.fourYear
        let fiveYearRate = matchedLender?.fiveYear

        DispatchQueue.main.async {

        var selectedRateString:String = "0"

        if selectedTerm == "sixMonths" {
            let selectedRate = sixMonthRate
            selectedRateString = selectedRate ?? "0"
        } else if selectedTerm == "1 Year" {
            let selectedRate = oneYearRate
            selectedRateString = selectedRate ?? "0"
        } else if selectedTerm == "2 Year"{
            let selectedRate = twoYearRate
            selectedRateString = selectedRate ?? "0"
        } else if selectedTerm == "3 Year" {
            let selectedRate = threeYearRate
            selectedRateString = selectedRate ?? "0"
        }else if selectedTerm == "4 Year" {
            let selectedRate = fourYearRate
            selectedRateString = selectedRate ?? "0"
        }else if selectedTerm == "5 Year" {
            let selectedRate = fiveYearRate
            selectedRateString = selectedRate ?? "0"
        }

         self.mortgageInterestRate.text = selectedRateString.percentage
    }
    func textField(_ textField: UITextField, shouldChangeCharactersIn 
    range: NSRange, replacementString string: String) -> Bool {


    if textField.text == mortgageInterestRate.text {

        let text: NSString = (textField.text ?? "") as NSString
        let finalString = text.replacingCharacters(in: range, with: 
        string)
        mortgageInterestRate.text = finalString.percentage

        return false

    }
}

    var percentage: String {
    // removing all characters from string before formatting
    let stringWithoutSymbol = self.replacingOccurrences(of: "%", with: 
     "")

    let styler = NumberFormatter()
    styler.minimumFractionDigits = 2
    styler.maximumFractionDigits = 2
    styler.numberStyle = .percent
    styler.multiplier = 1

    if let result = NumberFormatter().number(from: stringWithoutSymbol) 
 {
        return styler.string(from: result)!
    }

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