У меня есть в моем swift
приложение на UITextView
и я настройки шрифта в viewDidLoad
:Почему мой шрифт в UITextView меняет стиль без причины в swift?
let font = UIFont(name: "AppleSDGothicNeo-Light", size: 16.0)
myTextView.font = font
Это хорошо работает, когда я запустить приложение и записывает что-то в текстовом виде, я вижу:
Теперь у меня есть метод, который проверяет данный текст и находит и подчеркивает hashtags
в нем. Метод заключается в следующем:
func formatTextInTextView(textView: UITextView) {
textView.scrollEnabled = false
let selectedRange = textView.selectedRange
let text = textView.text
// This will give me an attributedString with the base text-style
let attributedString = NSMutableAttributedString(string: text)
let regex = try? NSRegularExpression(pattern: "#(\\w+)", options: [])
let matches = regex!.matchesInString(text, options: [], range: NSMakeRange(0, text.characters.count))
for match in matches {
let matchRange = match.rangeAtIndex(0)
let titleDict: NSDictionary = [NSForegroundColorAttributeName: UIColor(red: 244/255, green: 137/255, blue: 0/255, alpha: 1.0), NSFontAttributeName: font!]
attributedString.addAttributes(titleDict as! [String : AnyObject], range: matchRange)
}
textView.attributedText = attributedString
textView.selectedRange = selectedRange
textView.scrollEnabled = true
}
Я добавил этот метод к:
func textViewDidChange(textView: UITextView) {
formatTextInTextView(textView)
}
и теперь с входом каждого пользователя я динамически проверки, если это хэштегом или нет, и если это - выделяет текст оранжевым цветом. По крайней мере, это должно быть в теории. Таким образом, это происходит, когда метод включен:
Как только я начинаю писать текст:
(это, кажется, как системный шрифт для меня)
и когда я добавить хэштегом:
это работает для хэштегом, но остальная часть текста становится - похоже, - де стиль ошибки. В чем проблема? : |
Я попытался добавить 'textView.font = font' в самом начале метода' formatTextInTextView'but, что не работает ... есть что-нибудь еще, что потенциально может работать? – user3766930
Это совсем не то, что я предложил. Вы должны добавить шрифт как свойство во всю строку при создании вашей атрибутной строки. Прямо сейчас вы применяете только шрифт к цветным частям атрибутной строки. – rmaddy
См. Мой обновленный ответ, показывающий полное решение. – rmaddy