#swift
Вопрос:
Я пытаюсь удалить выбранную/выделенную строку из поля поиска.
На прикрепленной картинке я пытаюсь удалить слово удалено. До сих пор это мой прогресс:
if let selectedTextStartIndex = searchField.currentEditor()?.selectedRange.lowerBound, let selectedTextLength = searchField.currentEditor()?.selectedRange.length, let selectedTextRange = searchField.currentEditor()?.selectedRange{ if let selectedText = searchField.currentEditor(with: selectedTextRange){ print(selectedText) //deleted print(selectedTextStartIndex) //15 print(selectedTextRange) //7 } } extension String { func substring(with nsrange: NSRange) -gt; Substring? { guard let range = Range(nsrange, in: self) else { return nil } return self[range] } }
Я не уверен, как с этим поступить. Кроме того, есть ли более простой способ сделать это? Я ищу код, который можно повторно использовать и в любой другой строке.
Редактировать:
В этом случае я хочу удалить только первое удаленное.
Комментарии:
1. Почему бы просто не сделать:
if let selectedRange = searchField.currentEditor().selectedRange { searchField.currentEditor().text = searchField.currentEditor().replaceSubrange(selectedRange, with: "") }
?
Ответ №1:
Здесь есть removeSubrange
метод, который хорошо бы сработал:
if let string = searchField?.currentEditor()?.string, let range = searchField?.currentEditor()?.selectedRange, let strRange = Rangelt;String.Indexgt;(range, in: string) { searchField?.currentEditor()?.string.removeSubrange(strRange) }
Комментарии:
1. Это ответ на ваш вопрос?
2. Да, так оно и было. Спасибо 🙂