Редактируемый TextView со вторым NavBar — текст появляется, но слишком поздно

Редактируемый TextView со вторым NavBar — текст появляется, но слишком поздно.

Приложение имеет один контроллер навигации. У меня есть приложение для iPhone, которое имеет в основном три уровня.

  1. Уровень 1 - Таблица с названиями категорий

  2. Уровень 2 - Таблица со списком предметов для выбранной категории

  3. Уровень 3 — представление с вкладками с несколькими представлениями, включая UITextView для деталей элемента. Один из этих представлений с вкладками с TextView доступен для редактирования.

    Когда пользователь нажимает в редактируемом TextView, появляется KeyBoard. Пользователь может ввести TextView. Символы появляются по мере их ввода.

    В верхней части этого TextView уровня 3 есть NavBar (присутствует для всех 3 уровней с изменениями) с кнопкой BackButton и кнопкой «home-> Level1» справа.

Все работает нормально, пока в редактируемом TextView я не добавлю вторую панель навигации ниже существующей панели навигации. Этот второй 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];

}

person mbarron    schedule 25.05.2009    source источник
comment
Второй NavBar скрывал область UITextEdit, так что мне приходилось набирать около четырех строк, прежде чем я увидел текст. Я считаю, что мне нужно уменьшить высоту UITextEdit на 44 пикселя.   -  person mbarron    schedule 27.05.2009


Ответы (1)


Второй NavBar скрывал область UITextEdit, так что мне приходилось набирать около четырех строк, прежде чем я увидел текст. Я считаю, что мне нужно уменьшить высоту UITextEdit на 44 пикселя.

person mbarron    schedule 27.05.2009