Как: скрыть клавиатуру, когда UITextView не виден? - PullRequest
3 голосов
/ 15 апреля 2011

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

Проблема, с которой я столкнулся, заключается в том, что если фокус находится на текстовом представлении, которое прокручивается из поля зрения, когда пользователь нажимает «Готово», клавиатура остается, а текстовое представление остается в режиме редактирования.Этого не происходит, если текстовое представление находится в поле зрения.Точнее говоря, ячейка, на которую я смотрю, находится в верхней части экрана и будет выглядеть забавно, если ее прокрутить над экраном iPhone.У меня, похоже, нет той же проблемы, когда текстовое представление в нижней части таблицы прокручивается.

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

Чего мне не хватает

1 Ответ

1 голос
/ 18 апреля 2011

Поработав над этим большую часть дня, я усвоил вот что:

  1. На самом деле вы не можете получить доступ к ячейкам вне поля зрения в UITableView.Я думаю, что это имеет смысл, хотя и разочаровывает в моей ситуации
  2. Никакое количество перерисовок или попыток вручную отозвать первого респондента не поможет, даже если вы укажете на конкретную ячейку в определенной строке.
  3. setEditing: animated: (вызывается при нажатии кнопки «Готово») - это не единственное, что происходит
  4. Я собираюсь предположить, что причина, по которой UITextView остается в режиме редактирования, заключается в том, что кешируетсяверсия ячейки находится в режиме редактирования, и кэшированные ячейки / данные не вызываются этими различными табличными методами (например, setEditing: animated:)

Это решение, которое я нашел: (в UISearchBar и resignFirstResponder ):
* вызов [self.tableView endEditing:YES] заставляет все представления отставлять первого респондента, что означает, что мой UITextView больше не выбран.Я не уверен, почему это так, но появляется setEditing: отправляется в каждую ячейку и перерисовывается соответственно.

...