TextView не форматирует текст правильно в первый раз, но делает во второй раз - PullRequest
1 голос
/ 06 мая 2019

Я работаю над приложением для обмена сообщениями и пытаюсь создать UITextView, который корректируется в зависимости от ввода. Когда я добавляю текст в представление и он отступает, он не форматируется должным образом (показано на рисунке 1 ниже и представлено третьей функцией моего кода). Как ни странно, когда я закрываю и снова открываю клавиатуру, она форматируется по желанию (это можно отнести к первой функции моего кода и показано на рисунке 2). Любая помощь? Кроме того, чтобы уточнить, «...» в моем коде необходимо для несвязанного шага, который я собираюсь выполнить позже (хотя я оставил его, поскольку это может повлиять на код). Мой код:

@objc func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
        self.textView.frame.origin.y -= keyboardSize.height
        self.send.frame.origin.y -= keyboardSize.height
        let number = textView.contentSize.height / textView.font!.lineHeight
        textView.frame.size.height = CGFloat(42 + Double((Int(number) - 1))*20.3)
        textView.frame.origin.y -= CGFloat(Double((Int(number) - 1))*20.3)
        textView.text = "................................................................................."
        textView.text = textMessage
        textView.layer.borderColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.2).cgColor
        textView.alpha = 1
        send.backgroundColor = UIColor(red: 0.08627, green: 0.5373, blue: 1, alpha: 1)
    }
}

@objc func keyboardWillHide(notification: NSNotification) {
    self.textView.frame.origin.y = 619
    self.send.frame.origin.y = 623
    textView.frame.size.height = 42
    textMessage = textView.text
}

func textViewDidChange(_ textView: UITextView) {
    let number = textView.contentSize.height / textView.font!.lineHeight
    print(textView.font!.lineHeight)
    new = Int(number)
    if new != old {
        textView.frame.size.height = CGFloat(42 + Double((Int(number) - 1))*20.3)
        textView.frame.origin.y -= CGFloat(20.3)
    }
    old = new
}

Image2Image 1

1 Ответ

0 голосов
/ 06 мая 2019

вам нужно предоставить больше информации об этом, но если вы хотите предварительно зарядить любой тип информации или функций до запуска экрана.Вы могли бы использовать

override func viewWillAppear(_ animated: Bool) {
//add want ever you want to do
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...