Из того, что я прочитал, мне нужно будет использовать rangeOfString для поиска записи в текстовом виде, но я не уверен, как это сделать. Можно ли изменить цвет текста, введенного в текстовое представление в реальном времени, например, если кто-то написал «синий», я могу изменить слово на синий в тот момент, когда они набрали его. Если да, то как я могу это сделать? Я очень новичок в кодировании и даже новее.Если бы я хотел изменить цвет определенного слова, введенного в textview, как бы я это сделал?
ответ
Вам нужно будет использовать отнесенный текст для вашего текстового вида, а затем использовать textView(textView: UITextView, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
, который будет срабатывать при каждом изменении текста в текстовом виде. Примените свою собственную логику к тому, в какой диапазон будет попадать цветной текст и как это произойдет ...
Убедитесь, что ваш контроллер соответствует протоколу UITextViewDelegate
и передайте делегату textView ваш контроллер.
Демонстрация:
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
self.textView.delegate = self // important! Otherwise the textView will not know where to call the delegate functions!
}
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
// first make sure that the text field is the one we want to actually change
if textView == self.textView{
let nsString = textView.text as NSString // we explicitly cast the Swift string to NSString so that we can use rangeOfString for example
let stringLength = textView.text.characters.count
// Arbitrarily check if the string in the text field is not empty
// Apply your own logic for when to update the string
if stringLength > 0{
let text = NSMutableAttributedString(string: textView.text)
// Currently the range is assumed to be the whole text (the range covers the whole string)
// You'll have to apply your own logic here
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSMakeRange(0, stringLength))
textView.attributedText = text
}
}
return true
}
}
Например, вместо того, чтобы использовать выше, чтобы цвет целом текст по
text.addAttribute (NSForegroundColorAttributeName, значение: UIColor.redColor(), диапазон: NSMakeRange (0 , StringLength))
Раскрасьте первое вхождение "привет" в красном цвете:
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: nsString.rangeOfString("hello"))
Обратите внимание, что я явно отливать текст textView
«s в NSString
так, что мы можем использовать диапазон функций, таких как (rangeOfString()
)
хорошо, поэтому я выяснил проблему, с которой я столкнулся с этим ответом, а некоторые другие - это то, что в swift count больше нет члена строки. Есть ли способ обойти это. – SandySunday
Я думаю, что проблема в том, что вам нужно научиться делать больше исследований самостоятельно. В новой строке Swift строки Swift имеют другую структуру, вы можете получить доступ к длине строки следующим образом: 'str.characters.count'. –
Изменения были сделаны для быстрого, в котором счет больше не работает со строкой. Я немного изменил ответ, заданный the_critic (https://stackoverflow.com/users/1066899/the-critic). Спасибо всем, кто помог
класс ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
self.textView.delegate = self // important! Otherwise the textView will not know where to call the delegate functions!
}
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
// first make sure that the text field is the one we want to actually change
if textView == self.textView{
let nsString = textView.text as NSString // we explicitly cast the Swift string to NSString so that we can use rangeOfString for example
let stringLength = textView.text.characters.count
// Arbitrarily check if the string in the text field is not
пустой // Применить собственную логику, когда обновить строку если StringLength> 0 {
let text = NSMutableAttributedString(string: textView.text)
// Currently the range is assumed to be the whole text (the range covers the whole string)
// You'll have to apply your own logic here
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSMakeRange(0, stringLength))
textView.attributedText = text
}
}
return true
}
}
- 1. С чего бы начать, если бы я хотел это сделать?
- 2. Как бы я сделал это наилучшим образом?
- 3. Код JQuery, как бы я это сделал?
- 4. Я хотел бы переопределить FXMLLoader. Как я могу это сделать?
- 5. Как бы я сделал кнопку?
- 6. Как бы я сделал прямоугольник?
- 7. Я хотел бы получить подстрока
- 8. Я хотел бы удалить listitem
- 9. PHP синтаксис именование, я хотел бы видеть, если это правильно
- 10. Я сделал непревзойденную Tic Tac Toe AI, но я хотел бы сделать это "тупее"
- 11. Я хотел бы показать таймер потока в textView (Live)
- 12. Я хотел бы Параллелизировать реализацию Clojure
- 13. presentViewController не работает, как я хотел бы
- 14. В Python, как бы я сделал это Datetime?
- 15. Я хотел бы, чтобы извлечь слова из «:» сократить
- 16. Как бы я сделал эту работу?
- 17. C# Lambda + Extensions + Fluent - Как бы я это сделал?
- 18. Matlab regexp; Я хотел бы поймать слова между конкретными словами
- 19. Я хотел бы настроить tumblr s lightbox
- 20. Как бы я сделал подробный переход факториала?
- 21. Если бы я не хотел использовать NULL, как бы я нормализовал эту таблицу?
- 22. Я хотел бы знать значение cv error
- 23. я хотел бы изменить имя метода Main() в mymain()
- 24. Невидимая порция Colorbox. (Я бы хотел (а) это #FFF)
- 25. Если бы я хотел создать графический интерфейс для wget в C++, где бы я начал?
- 26. Как бы я сделал это действительно сложное дерево наследования
- 27. boost :: filter_iterator - как бы я это сделал с STL?
- 28. Если бы я мог расширять Java-перечисления, я бы сделал X
- 29. Я хотел бы знать, как было создано это изображение PNG.
- 30. Я хотел бы преобразовать PDF в excel
Будучи новым, не дает вам пропуск на прикладывая усилие в себе. Сначала попробуйте, начните с чтения документации. Я отведу вас в правильном направлении, но вы не можете ожидать, что люди сделают все для вас. Это не то, о чем СО. Вы должны просмотреть ссылки и документацию UITextView и ответить, как что-то изменить в 'UITextView', вы должны посмотреть на' NSAttributedString' или 'NSMutableAttributedString' – soulshined
. Прежде чем делать такие комментарии, возможно, вам стоит узнать о серии изменений синтаксиса, сделанных между быстрыми 1 и быстрыми 2, такими как countElements, которые изменяются просто для подсчета. Я не прошу кого-нибудь написать что-нибудь для меня, просто укажите мне в правильном направлении. Даже используя решения из официальной документации, такие как let boldRange = text.rangeOfString (NSLocalizedString ("bold", comment: "")) не всегда работают правильно. Я прошу людей с опытом работы на этом языке помочь мне в решении. Если вы не предложите помощь, возможно, вам лучше не комментировать. – SandySunday
Это не личное нападение. Его способ поощрять новичков к участию в исследованиях и попытках самостоятельно. Это не только ограничивает повторяющиеся вопросы (которые являются общими на этом сайте), это потенциально ограничивает неопределенные ответы, например, приведенные ниже.Следуя инструкциям [SO Guidelines] (http://stackoverflow.com/help/how-to-ask), чтобы задать хороший вопрос, некоторые из основных заметок в нем есть исследование, __showing effort__, предоставление кода для сужения решения, также не позволяет пользователям отправлять ответ, который не имеет ничего общего с темой. Сохраняет чистый и беспорядочный сайт :) – soulshined