#swift #xcode #textfield
#swift #xcode #Текстовое поле
Вопрос:
Я пытаюсь использовать textFieldShouldReturn to, чтобы мое текстовое поле контролировало ширину изображения при вводе значения, но когда я пытаюсь преобразовать текст в моем текстовом поле в значение Int, оно отображается как nil в моей консоли.
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
let text = textField.text
let numText = Int(textField.text!)
if widthPer.text == text {
print(text!)
print(widthPer.text!)
print(numText!) //returns nil
squareOneWidth.constant = CGFloat(numText!) * 2
slider.value = Float(numText!)
calPercentage()
calPercentageTwo()
}
return true
}
Я также разрешаю пользователю вводить только числа от 10 до 90. Я думаю, что это может иметь какое-то отношение к моей функции, позволяющей это. Как я могу решить проблему?
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
let num = Double(textField.text!)
if num! < 10 {
textField.text = "10%"
} else if num! > 90 {
textField.text = "90%"
} else if num! >= 10 || num! <= 90 {
textField.text = String(Int(num!)) "%"
}
//print(num!)
return true
}
Ответ №1:
Это потому, что к тому времени, когда вы пытаетесь преобразовать свое textField
значение в an Int
, вы уже обновили его значение до «%», поэтому оно возвращается nil
, потому что «31%» — это не число.
Я бы посоветовал сохранить значение исходного числа в a var
, чтобы вы могли вспомнить его, когда оно вам понадобится
var originalNumber = 0
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
let num = Double(textField.text!)
originalNumber = Int(textField.text)
if num! < 10 {
textField.text = "10%"
} else if num! > 90 {
textField.text = "90%"
} else if num! >= 10 || num! <= 90 {
textField.text = String(Int(num!)) "%"
}
//print(num!)
return true
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
let text = textField.text
let numText = originalNumber
if widthPer.text == text {
print(text!)
print(widthPer.text!)
print(numText!) //returns nil
squareOneWidth.constant = CGFloat(numText!) * 2
slider.value = Float(numText!)
calPercentage()
calPercentageTwo()
}
return true
}
Комментарии:
1. У меня есть проблема с возможностью ввода чисел больше 90 и меньше 10, но основная проблема решена.
2. Если оно превышает 90 или меньше 10, это, похоже, влияет на изображение, как я могу это отрицать?