iPhone - проблема с UITextView - PullRequest
6 голосов
/ 20 мая 2009

Вероятно, это легко сделать, но я просто не могу понять - как мне закончить редактирование текста? как заставить клавиатуру исчезнуть? или я должен щелкнуть снаружи, чтобы он ушел?

Ответы [ 4 ]

10 голосов
/ 21 мая 2009

Во-первых, (если честно) довольно простой вопрос, подобный этому, заставляет меня задуматься, пытались ли вы прочитать документацию или поискать в Интернете.

Поиск по «документации Apple UITextView» дает эту ссылку к документации класса. Точно так же здесь документация для UITextViewDelegate.

Поиск «простого примера UITextView» дает вам полезный пример .

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

P.S. Люди выше верны, если немного кратко (понятно). Вам необходимо реализовать UITextViewDelegate. В этом делегате, если вы хотите спрятать клавиатуру на клавише возврата, реализуйте shouldChangeTextInRange, найдите символ @ "\ n" и подайте в отставку первого респондента, если вы его получите. В качестве альтернативы, добавьте кнопку «Закончить редактирование» в свой пользовательский интерфейс и подайте в отставку первого респондента, если пользователь нажимает ее.

2 голосов
/ 08 апреля 2012

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

- (void)textViewDidEndEditing:(UITextView *)textView

... для любого объекта, который вы указали в качестве делегата textView. Вы можете вызвать это самостоятельно, позвонив ...

- (BOOL)endEditing:(BOOL)force

... в представлении, содержащем ваше текстовое поле.

Предположим, у меня есть UITextView внутри UITableViewCell (внутри UITable). Я хочу, чтобы редактирование заканчивалось нажатием на таблицу. Я мог бы сделать это:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapTable)];
    [[self tableView] addGestureRecognizer:tapRecognizer];
    [tapRecognizer release];
}

- (void)didTapTable
{
    [[self tableView] endEditing:YES];
}

Теперь, когда я нажимаю на свою таблицу, я заканчиваю редактирование. И, как уже говорили другие, в textViewDidEndEditing я должен обязательно позвонить [textView resignFirstResponder];

2 голосов
/ 21 мая 2009

Очень просто:

[myTextField resignFirstResponder]; 

сделает свое дело.

0 голосов
/ 21 мая 2009
[yourTextField resignFirstResponder];

приведет к исчезновению клавиатуры и окончанию редактирования.

...