ввод текста жирным шрифтом / курсивом в textView - PullRequest
0 голосов
/ 18 июня 2019

Я хочу 2 кнопки, одну для жирного шрифта и одну для курсива. Когда пользователь нажимает любую кнопку, я хочу, чтобы она включила жирный шрифт / курсив для текста, который он вводит в textView, как я могу сделать это быстро?

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Вы можете использовать вспомогательное представление клавиатуры.

override func viewDidLoad() {
    super.viewDidLoad()

    let bar = UIToolbar()
    let boldButton = UIBarButtonItem(title: "Bold", style: .plain, target: self, action: #selector(toggleBold))
    let italicButton = UIBarButtonItem(title: "Italic", style: .plain, target: self, action: #selector(toggleItalic))
    bar.items = [boldButton, italicButton]
    bar.sizeToFit()
    textView.inputAccessoryView = bar


    guard let font = getFont() else { assert(false); return }
    textView.font = font
    textView.typingAttributes = [NSAttributedString.Key.font: font]
}

Переключите логическое значение на 1 и 0, если включено / отключено для полужирного и курсива, и обновите шрифт как:

func updateFont() -> UIFont? {
    let italic = keyboardAddon.italic
    let bold = keyboardAddon.bold
    let font = UIFont(name: "Helvetica", size: 14.0)

    if bold && italic {
        return font?.withTraits([ .traitBold, .traitItalic ])
    } else if bold {
        return font?.withTraits(.traitBold)
    } else if italic {
        return font?.withTraits(.traitItalic)
    } else {
        return font
    }
}
0 голосов
/ 18 июня 2019

Добавит два разных действия для двух кнопок. Если пользователь нажмет на кнопку, вызовет метод Bold или italic bellow, а шрифт будет изменен для textView.

@objc func boldButtonAction(sender : UIButton) {
    textView.font = UIFont.boldSystemFont(ofSize: 14)
}

@objc func italicButtonAction(sender : UIButton) {
    textView.font = UIFont.italicSystemFont(ofSize: 14)
}
...