Добавить готовую кнопку в UINavigationbar - PullRequest
4 голосов
/ 26 мая 2011

Как добавить кнопку «Готово» на навигационную панель UIN, когда пользователь касается определенного текстового поля или текстового представления?

Или лучше определить, когда отображается клавиатура, а затем отобразить кнопку.

Я бы хотел, чтобы кнопка «Готово» отклоняла клавиатуру, как в стандартном приложении Notes.

Ответы [ 2 ]

6 голосов
/ 26 мая 2011

Вы можете попробовать что-то похожее на это:

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{       
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                                                target:self
                                                                                action:@selector(doneEditing)];
    [[self navigationItem] setRightBarButtonItem:doneButton];
    [doneButton release];
}

, а также

- (void)textViewDidBeginEditing:(UITextView *)textView 
{       
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                                                target:self
                                                                                action:@selector(doneEditing)];
    [[self navigationItem] setRightBarButtonItem:doneButton];
    [doneButton release];
}

со следующими настройками, как вам нравится

- (void)doneEditing {
    [[self view] endEditing:YES];
}

, затем удалитекнопка в - (void)textFieldDidEndEditing:(UITextField *)textField, а также в - (void)textViewDidEndEditing:(UITextView *)textView

Просто не забудьте настроить делегатов!

2 голосов
/ 26 мая 2011

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

- (void)textViewDidBeginEditing:(UITextView *)textView {
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                                                target:textView
                                                                                action:@selector(resignFirstResponder)];
    self.navigationItem.rightBarButtonItem = doneButton;
    [doneButton release];
}

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

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