Не удается заставить клавиатуру отставить последовательно с UITextView в UITableViewCell - PullRequest
1 голос
/ 05 декабря 2009

У меня есть UITextView в ячейке UITableView. Мне не удалось заставить клавиатуру последовательно уходить в отставку после редактирования. Обнаружение DidEndEditing не сработало. Добавление моей собственной кнопки «Готово» на панель инструментов приводит к прерывистым результатам. Совет? (Примечание: это UITextView, а не UITextField. Спасибо)

Ответы [ 2 ]

0 голосов
/ 05 декабря 2009

добавление просмотра текста в ячейку:

cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
managedTextView = [[[UITextView alloc] initWithFrame:CGRectMake(7,8,260, 30)] autorelease];
managedTextView.delegate = self;
managedTextView.scrollEnabled = YES;
managedTextView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
managedTextView.text=thought.managedthought;
[cell.contentView addSubview: managedTextView];
cell.accessoryType = UITableViewCellAccessoryNone;

код кнопки "Готово":

- (void)saveTextView:(id)sender
{
    [managedTextView resignFirstResponder];
    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save:)];
    self.navigationItem.rightBarButtonItem = saveButton;
    [saveButton release];
...
}

(«новая» кнопка сохранения используется при сохранении всего UITableViewController)

0 голосов
/ 05 декабря 2009

Вы закрываете контроллер табличного представления после того, как закончите редактирование? Я столкнулся с недетерминированным сбоем, который произошел при выполнении [textView resignFirstResponder] плюс вызов (что-то вроде [self doneClicked:nil]), который отклонил бы контроллер представления, который размещал UITableView.

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

Решением было вызвать все после некоторой задержки:

[self performSelector:@selector(doneClicked:) withObject:nil afterDelay:0.5]

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