У меня есть UITextView и кнопка, программно ограниченная в UIView, когда нажатие текстового представления показывает клавиатуру, и представление перемещается вверх с помощью клавиатуры, как я хочу, поскольку у меня есть функции, которые имеют дело с этим
Моя проблема заключается в том, что когда я вставляю какой-то текст в UITextView, мне нужно дважды нажать кнопку, прежде чем вызывать установленную мной функцию, и в табличном представлении отображаются данные
Кто-нибудь знает причину, почему это так? происходит, и почему это не работает при первом нажатии на кнопку, вот мой код
var message = [String]()
let messageView: UIView = {
let view = UIView()
return view
}()
let sendButton: UIButton = {
let button = UIButton()
button.setTitle(" send", for: .normal)
button.setTitleColor(.green, for: .normal)
button.addTarget(self, action: #selector(handleSend), for: .touchUpInside)
return button
}()
@objc func handleSend() {
message.append(messageTextView.text)
tableview.reloadData()
}
let messageTextView: UITextView = {
let textView = UITextView()
textView.textColor = .black
textView.font = UIFont.preferredFont(forTextStyle: .headline)
return textView
}()
let line: UILabel = {
let label = UILabel()
label.backgroundColor = .gray
return label
}()
let tableview: UITableView = {
let tv = UITableView()
tv.backgroundColor = UIColor.white
tv.translatesAutoresizingMaskIntoConstraints = false
return tv
}()
override func viewDidLoad() {
super.viewDidLoad()
constraints()
hideKeyboardWhenTappedAround()
tableview.delegate = self
tableview.dataSource = self
tableview.register(TableViewCell.self, forCellReuseIdentifier: "cell")
tableview.separatorStyle = UITableViewCell.SeparatorStyle.none
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIWindow.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIWindow.keyboardWillHideNotification,
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return message.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
cell.textLabel?.text = message[indexPath.row]
cell.selectionStyle = .none
cell.textLabel?.numberOfLines = 0
return cell
}