Как сделать, чтобы DidSelectRow активировал клавиатуру?

Цель

Я хочу, чтобы клавиатура (настраиваемая) отображалась, когда я нажимаю на ячейку в моем табличном представлении и говорю, что клавиатура редактирует метку в выбранной ячейке.

Что я прочитал и попробовал

Переполнение стека и другие поисковые темы / руководства

  1. Быстрый пример настраиваемых представлений для ввода данных (настраиваемая клавиатура в приложении)
  2. Как сделать настраиваемую клавиатуру только для моего приложения в Swift?
  3. iOS 8: Создание Пользовательская клавиатура в Swift

Наряду с другими результатами и поисковыми запросами (а также рекомендованными показаниями в этих потоках), они отлично помогли мне получить клавиатуру так, как я хочу (что зависит от приложения, я не хочу, чтобы пользователь устанавливал клавиатуру для использования приложение), однако никто не объясняет, как я мог «активировать» клавиатуру без текстового поля.

Мой мыслительный процесс таков: у меня будет клавиатура с текстовым полем, чтобы получать ввод от нажатых клавиш. Затем этот ввод будет отправлен на метку, которая находится в выбранной ячейке. Проблема в том, что клавиатура отображается без вызова ...

Почему мне не нужно текстовое поле в ячейке: потому что я думаю, что более умно / элегантно, если ячейка tableview активирует клавиатуру. Я видел это в других приложениях и не могу понять, как это делается.

Любая помощь по этому поводу приветствуется. Я совершенно новичок в программировании, использую Swift (так что понятия не имею, Obj-C или тому подобное).

Спасибо!


person TVDN    schedule 10.06.2016    source источник
comment
Я не понимаю, почему вам не нужен UITextField (без белого фона, без рамки и т. Д.), А просто обновите метку, потому что вы можете настроить UITextField, чтобы он выглядел как метка. В didSelectRowAtIndexPath: просто сделайте [theCellTextField becomesFirstResponder] (или что-то в этом роде)   -  person Larme    schedule 10.06.2016
comment
Ярлык не редактируется. Клавиатура не будет отображаться. То, что вы пытаетесь сделать, невозможно. Вам нужно текстовое поле, а не ярлык.   -  person Duncan C    schedule 10.06.2016
comment
Спасибо, Ларм и Дункан, так что я думаю, нет возможности вызвать отдельное представление при выборе ячейки? Представление, которое не покрывает все окно и может содержать что угодно, например кнопки и текстовые поля?   -  person TVDN    schedule 10.06.2016


Ответы (2)


Что ж, после множества дискуссий на других веб-сайтах, стыдно это говорить, но то, что я хотел, было фактически невозможным (как заявил Дункан). Почему-то мне показалось, что в программировании этого слова нет, но, увы, оно есть. Что ж, способ, которым я обошел это ограничение, соответствовал ответам здесь, в комментариях, а также в ресурсных материалах, которые я уже читал:

У меня 2 просмотра:

  1. tableView - это будет список элементов, значение которых я хотел бы изменить. Имеет несколько ярлыков, одна из которых будет редактироваться пользователем.
  2. keyboardView - настраиваемая клавиатура, позволяющая вводить данные пользователем.

Для клавиатуры я использовал метод делегата, как описано в «Быстром примере пользовательских представлений для ввода данных». Это сработало отлично и отправило данные в tableView под функцией keyWasTapped.

Следующим был tableView. У меня было 3 метки в настраиваемой ячейке, одна из которых называлась valueLabel. Мне пришлось добавить текстовое поле к моей раскадровке, скрытое за табличным представлением, с которым будет взаимодействовать пользователь, и в didselectrow я включил команду для вызова клавиатуры:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        textField.becomeFirstResponder()
}

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

Спасибо Сандипу и Ларме за уделенное время.

person TVDN    schedule 16.06.2016

ТВДН,

Имейте текстовое поле в ячейке, а не метку :) Создайте настраиваемую ячейку, создайте IBOutlet для этого класса ffrom textField в cellForRowAtIndexPath

let tableCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! myCell
tableCell.yourTextField.resignFirstResponder()

и в didSelectRowAtIndexPath

let tableCell = self.tableView.cellForRowAtIndexPath(indexPath)
self.tableView.dequeueReusableCellWithIdentifier("cell") as! myCell
    tableCell.yourTextField.becomeFirstResponder()
person Sandeep Bhandari    schedule 10.06.2016
comment
Привет, Сандип, спасибо за быстрый ответ! Я обязательно буду использовать это в своем приложении, однако я хотел бы иметь текстовое поле с клавиатурой. Думаю, возникает вопрос: как я могу вызвать представление (которое не покрывает все окно), когда я выбираю ячейку в своем табличном представлении. Это представление может быть любым, следовательно, я также могу сделать там клавиатуру ... может быть, я просто задаю неправильный вопрос ...? - person TVDN; 10.06.2016