Если я реализую метод shouldChangeCharactersInRange
, существует некоторая несогласованность между значением по диапазону и размером текста. Когда у меня есть текстовое поле с одной общей буквой (например, «a») и нажмите клавишу «назад», текст, подлежащий замене, является пустой строкой, textField.text!.characters.count
возвращает 1, а ярость имеет позицию 0 и длину 1 (что все имеет смысл), однако если текстовое поле имеет только эможи (например, «»), range.length
возвращает 2, а не 1, а затем я имею сбой при диапазоне отливки от NSRange
до Range<String.Index>
. Почему это происходит?shouldChangeCharactersInRange дает различный диапазон с emoji
0
A
ответ
1
Swift 3.0+
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let strtext = textField.text else {
return true }
let completeString = (strtext as NSString).replacingCharacters(in: range, with: string)
let increment = string == "" ? 0 : 1
let finalString = (completeString as NSString).substring(with: NSRange(location: 0, length: range.location + increment))
print(finalString)
return true
}
Примечание: - Это будет дает строку с диапазоном STARTINDEX в положение курсора
Смежные вопросы
- 1. Диапазон значений Emoji
- 2. Как получить первый различный диапазон двух строки
- 3. формат даты дает различный результат в angularjs
- 4. cv.COLOR_BGR2LAB дает неправильный диапазон
- 5. Невозможно скрыть клавиатуру с shouldChangeCharactersInRange
- 6. диапазон() функция дает мне неприятности
- 7. UITextField переопределить shouldChangeCharactersInRange
- 8. shouldChangeCharactersInRange со специальным разделением
- 9. Как ограничить Emoji диапазон u2600-u26FF для текстового поля
- 10. TextField delegate shouldChangeCharactersInRange
- 11. UITextView shouldChangeCharactersInRange in Swift
- 12. textFieldShouldReturn and shouldChangeCharactersInRange
- 13. textfield shouldChangeCharactersInRange not called
- 14. Textfield shouldchangecharactersinrange swift
- 15. shouldChangeCharactersInRange вызов дважды
- 16. textFiled shouldChangeCharactersInRange не работает
- 17. UITextField shouldChangeCharactersInRange срабатывает дважды?
- 18. shouldChangeCharactersInRange, который принимает одиночный '.'
- 19. Surround emoji с пробелами
- 20. Сплит-строка с emoji
- 21. Показать emoji с TextView
- 22. Такая же петля дает различный выход. Java IO
- 23. shouldChangeCharactersInRange несколько текстовых полей замерзает
- 24. shouldChangeCharactersInRange влияет на все UITextField's
- 25. textField: shouldChangeCharactersInRange: replacementString: в подклассе
- 26. SizeOf дает различный результат в зависимости от того поля
- 27. UITextField shouldChangeCharactersInRange Делегат не работает
- 28. Пользовательская клавиатура Emoji
- 29. GLSL 2.0 Shader дает различный свет в другом устройстве
- 30. Dev C++ дает различный результат в случае указателя адреса
Возможный дубликат [NSRange для диапазона] (http://stackoverflow.com/questions/ 25138339/nsrange-to-rangestring-index) - Диапазоны строк и NSString различаются, и вы не можете просто «отличать» между ними. –