Редактируемый TextView со вторым NavBar - текст появляется, но слишком поздно.
Приложение имеет один навигационный контроллер.
У меня есть приложение для iPhone, которое в основном имеет три уровня.
Уровень 1 - Таблица с названиями категорий
Уровень 2 - Таблица со списком товаров для выбранной категории
Уровень 3 - Представление с вкладками с несколькими представлениями, включая UITextView для получения подробной информации об элементе
Один из этих видов с вкладками и TextView доступны для редактирования.
Когда пользователь нажимает в редактируемом TextView на клавиатуре
появляется. Пользователь может ввести в TextView. Появляются персонажи
как они набраны.
В верхней части этого TextView уровня 3 есть NavBar (присутствует для всех 3 уровней с
изменения) с помощью кнопки BackButton и кнопки «home-> Level1» справа.
Все работает нормально, пока в редактируемом TextView я не добавлю вторую панель навигации
ниже существующего NavBar. Этот второй NavBar имеет две кнопки
также. Они Сохранить / Отменить.
Когда я нажимаю эти кнопки Сохранить и Отменить правильное действие
методы достигнуты. Все идеально, за одним исключением, Текст
который набран не появляется в TextView, пока либо
Нажмите кнопку «Сохранить» или «Отмена». Соответствующая настройка кнопки и
Методы действий в моем TabViewController.m
приведены ниже. Мне нужно упорствовать
данные.
Я думал, что получение Уведомления из TextView и действия handleTextChange поможет, но не повезло. Я застрял.
.........
- (void)loadView {
self.myTextView = [[UITextView alloc] init];
self.myTextView.delegate = self;
self.view = self.myTextView;
//UITextViewTextDidChangeNotification
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(handleTextChange:)
name:UITextViewTextDidChangeNotification
object:nil];
NSLog(@"Registered DG_HandleChangeTextNotification with notification center.");
}
- (void)handleTextChange:(NSNotification * )note
{
[self.myTextView setNeedsDisplay] ;
NSLog(@"...Handled Text Change.");
}
- (void)textViewDidBeginEditing:(UITextView *)textView
{
// provide my own Done/Save button to dismiss the keyboard
saveNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
saveNavigationBar.barStyle = UIBarStyleBlackOpaque;
UINavigationItem *doneItem = [[UINavigationItem alloc] init];
doneItem.title = @"My Notes";
UIBarButtonItem *doneItemButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemSave
target:self action:@selector(saveAction:)];
UIBarButtonItem *cancelItemButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self
action:@selector(cancelAction:)];
[doneItem setRightBarButtonItem:doneItemButton animated:NO];
[doneItem setLeftBarButtonItem:cancelItemButton animated:NO];
[saveNavigationBar pushNavigationItem:doneItem animated:NO];
[self.view addSubview:saveNavigationBar];
[doneItem release];
[cancelItemButton release];
[doneItemButton release];
}
- (void)saveAction:(id)sender
{
// finish typing text/dismiss the keyboard by removing it as the first responder
self.text = self.myTextView.text;
[self.saveNavigationBar removeFromSuperview];
[self.myTextView resignFirstResponder];
}
- (void)cancelAction:(id)sender
{
[self.saveNavigationBar removeFromSuperview];
[self.myTextView resignFirstResponder];
}