Я использую UIKeyCommands
, чтобы позволить пользователям с Bluetooth-клавиатурой использовать CMD + B
для жирного шрифта и CMD + I
для курсива.
Мне удалось сделать это здесь успешно ...
@objc func boldText() {
textViewOutlet.font = UIFont(name:"Avenir-Heavy", size: 16)
}
@objc func italicText() {
textViewOutlet.font = UIFont(name:"AvenirNext-Italic", size: 16)
}
// enable functions
override var keyCommands: [UIKeyCommand]? {
return [
UIKeyCommand(input: "b", modifierFlags: .command, action: #selector(boldText), discoverabilityTitle: "Bold"),
UIKeyCommand(input: "i", modifierFlags: .command, action: #selector(italicText), discoverabilityTitle: "Italic")
]
}
Однако, когда я использую эти ключевые команды, он теперь меняет весь текстовый вид на жирный или курсив, а не толькотекст, набранный перед полужирным шрифтом или курсивом, снова «отключается».
Любая помощь очень ценится!
Я думаю, что мне нужно что-то вроде:
@objc func italicText() {
textViewOutlet.font.FROMTHECURRENTLOCATION UNTIL IT'S DISENGAGED = UIFont(name:"AvenirNext-Italic", size: 16)
}
РЕДАКТИРОВАТЬ:
Рассматривая это далее, я вижу, что есть метод, называемый набором атрибутов, который, я думаю, мог бы быть использован.Некоторые подробности об этом ответе
Я пробовал это:
@objc func boldText() {
textViewOutlet.typingAttributes = UIFont(name:"Avenir-Heavy", size: 16)
}
, но я не думаю, что у меня правильный метод.Кто-нибудь знает, как использовать typingAttributes для установки шрифта?
ОБНОВЛЕНИЕ:
Я решил это с помощью .typingattributes и адаптировал ответ здесь .
Вы можете получить возможность выделять текст жирным шрифтом / курсивом / разными цветами и т. Д. С момента нажатия на него, используя:
@objc func boldText() {
let makeBold: [String : Any] = [
NSAttributedStringKey.font.rawValue: UIFont(name: "Avenir-Heavy", size: 15.0)!
]
textViewOutlet.typingAttributes = makeBold
}