Не могу избавиться от клавиатуры в UITextView - PullRequest
3 голосов
/ 22 сентября 2009

У меня есть таблица, и в одной из ячеек у меня есть UITextView. Когда пользователь нажимает на нее, появляется клавиатура. Я пытался разными способами избавиться от этого. Мой первый подход состоял в том, чтобы обнаружить нажатие на ячейку таблицы UITextView, но, поскольку текстовое представление занимает большую часть этого, оно не подходит. Затем я попытался добавить кнопку на панель инструментов, и всякий раз, когда пользователь нажимает ее, клавиатура исчезает с resignFirstResponder, но она не работает. Кажется, что только когда я нахожусь в том же виде, что и UITextView, resignFirstResponder работает. Так как я могу избавиться от клавиатуры с другой точки зрения?

Спасибо.

Ответы [ 5 ]

1 голос
/ 22 сентября 2009

Приведенный ниже метод использует клавишу возврата для отклонения клавиатуры UITextView.

В вашем контроллере установите делегат UITextView на себя как это:

myTextView.delegate=self;

Затем добавьте этот метод:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
 replacementText:(NSString *)text
{
 // Any new character added is passed in as the "text" parameter
 if ([text isEqualToString:@"\n"]) {
  // Be sure to test for equality using the "isEqualToString" message
  [textView resignFirstResponder];

  // Return FALSE so that the final '\n' character doesn't get added
  return FALSE;
 }
 // For any other character return TRUE so that the text gets added to the view
 return TRUE;
}

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

1 голос
/ 22 сентября 2009

Что значит "это не сработает". Если txtView является вашим UITe4xtView, вы имеете в виду, что связывание кнопки с действием, для которого [txtView resignFirstResponder] не будет работать? Я использовал этот код раньше, и он работает для меня

0 голосов
/ 22 июля 2010

попробуйте снять флажок «Редактируемый» в окне «Атрибуты текстового представления» в Интерфейсном Разработчике.

это останавливает отображение клавиатуры, если пользователь нажимает на ваш TextView

0 голосов
/ 22 сентября 2009

Я использую для такого рода проблемы следующий метод

- (BOOL)textFieldShouldReturn: tf_some_text_field {

[tf_some_text_field resignFirstResponder];
[tf_another_text_field_in_the_same_view resignFirstResponder];

return YES;
}

надеюсь, это поможет ...

0 голосов
/ 22 сентября 2009

Не зная ни размера элементов управления, ни намерений, трудно дать твердую рекомендацию. Однако, если вы ищете текстовое представление только для чтения, почему бы не рассмотреть UILabel? Если он будет содержать много текста только для чтения и вам необходимо расширенное форматирование, рассмотрите UIWebView с вашим форматированием.

Конечно, этот ответ может быть совершенно неуместным. Можете ли вы уточнить свои намерения, может быть, показать снимок экрана с незавершенным приложением (конечно же)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...