2016-05-04 7 views
0

enter image description hereПользователь не должен быть в состоянии удалить данный символ в текстовом поле, которое представляет собой текст

функ TextField (TextField: UITextField, диапазон shouldChangeCharactersInRange: NSRange, replacementString строки: String) -> Bool { возвращающих }

Мне нужно ограничить пользователя удалением этого символа из текстового поля в swift. Пользователь может удалить любую вещь из текстового поля без удаления этого символа.

+0

Почему бы не переместить его из текстового поля? если нет, что вы попробовали - покажите код - и что пошло не так? – Wain

+0

Я не могу перенести этот символ из текстового поля, и я ничего не сделал для этого. Кроме этого if (string.characters.count == 1) { if currencyDetail! = "" { amount.text = currencyDetail } return false } –

ответ

0

Как наиболее вероятный сценарий состоит в том, что символ евро всегда будет находиться в текстовом поле и будет первым символом, я бы проверил, если диапазон символов для изменения больше 0 и начинается с 0. (Это будет работать независимо от символа в первой позиции)

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
    if range.length>0 && range.location == 0 { 
      return false 
    } 
    return true 
} 

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

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
    if range.length>0 && range.location == 0 { 
     let changedText = NSString(string: textField.text!).substringWithRange(range) 
     if changedText.containsString("€") { 
      return false 
     } 
    } 
    return true 
} 
+0

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