Создание строки ввода текста над клавиатурой, отображаемой, когда пользователь нажимает кнопку - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь создать панель ввода в стиле Facebook, когда пользователь хочет оставить комментарий. Для этого я создал пользовательский UIView в .xib, который содержит мои кнопки и ввод UITextView (как правило, я предпочитаю использовать раскадровку для программного создания ограничений). Я связал нижнее ограничение этого UITextVuew с нижней частью моего представления с константой, которая представляет высоту клавиатуры, чтобы она отображалась прямо над клавиатурой. Все идет нормально.

Я хочу, чтобы UITextView загружался, но оставался скрытым и неактивным, пока пользователь не нажмет кнопку комментария. Затем у меня есть попытка контроллера основного представления сделать UITextView первым респондентом, который должен вызвать функцию WillShowKeyboard, в которой я сбрасываю ограничение в моем текстовом представлении, а также делаю мой настраиваемый вид видимым и действующим.

Проблема в том, что текстовое представление по какой-то причине не может стать первым респондентом. Я думаю, потому что это «вне иерархии представления» или, может быть, потому что взаимодействие с пользователем отключено в момент вызова. Я также попытался вызвать первого респондента в моем собственном представлении, которое также ничего не делало.

Я хочу, чтобы эта строка ввода была настраиваемым представлением / ячейкой, чтобы я мог повторно использовать ее в проекте, я бы предпочел не создавать ее программно в каждом месте, где я хочу ее использовать. Есть ли способ принудительно включить мое пользовательское представление в иерархию представлений (имеет ли это смысл?). Также есть способ заставить клавиатуру отображаться без какого-либо текстового представления, фактически становящегося первым респондентом, потому что это также было бы адекватным решением.

Впервые задаю вопрос о переполнении стека, так что извините, если что-то неясно! Спасибо

1 Ответ

0 голосов
/ 27 февраля 2020

Похоже, что ваша основная проблема в том, что вы не видите клавиатуру после вызова becomeFirstResponder в UITextView.

Вы убедились, что вызываете ее из основной очереди?

DispatchQueue.main.async {
    self.textView.becomeFirstResponder()
}
...