как добавить готовую кнопку на клавиатуре - PullRequest
1 голос
/ 03 февраля 2011

Мне нужно добавить кнопку «Готово» на клавиатуре.

Apple не предоставляет такую ​​радость, но некоторые приложения, которые я обнаружил, сделали, затем, предыдущие кнопки.

какэто .

как я могу добавить их и как я могу дать им событие клика.

Может кто-нибудь, пожалуйста, помогите мне.

1 Ответ

2 голосов
/ 03 февраля 2011

1. Определите готовую кнопку (= клавиша возврата):

textField.returnKeyType = UIReturnKeyDone;

2.Добавьте прослушиватель действий:

[textField addTarget:self action:@selector(textFieldDoneEditing:) forControlEvents:UIControlEventEditingDidEndOnExit];

3. Определите событие-действие:

- (IBAction)textFieldDoneEditing:(id)sender {
    [sender resignFirstResponder];
}

Веселись!

РЕДАКТИРОВАТЬ:

Здесь вы можете найти подробные инструкции, как добавить панель инструментов с UITextField Клавиатура выше и выше: http://www.randomsequence.com/articles/adding-a-toolbar-with-next-previous-above-uitextfield-keyboard-iphone/

EDIT2:

Теперь у меня есть очень хороший пример для вас: «Это представление расширяет UITextView, добавляя поверх клавиатуры, связанной с этим UITextView панель инструментов с кнопкой« Готово »"

Я проверяю код, и это намного проще, чем в первом примере:

http://blog.demay -fr.net / 2009/07 / cocoa-how-to-add-a-панель инструментов с кнопкой сверху на uitextview-в-порядке-добавить-убрать-кнопку /

EDIT3:

Хм, нет, я не проверяю код.Но я проверю это сейчас!

1.Проблема: правильная инициализация.Если я добавляю UITextView в IB, вызывается initWithCoder:

- (id)init {

    NSLog(@"init");

    if (self = [super init]) {
        //register a specific method on keyboard appearence
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)decoder {

    NSLog(@"initWithCoder");

    if (self = [super initWithCoder:decoder]) {
        //register a specific method on keyboard appearence
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    }
    return self;
}

- (id)initWithFrame:(CGRect)frame {

    NSLog(@"initWithFrame");

    if (self = [super initWithFrame:frame]) {
        //register a specific method on keyboard appearence
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    }
    return self;
} 

2.Проблема: Нет представления с префиксом "UIKeyboard":

for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) {
    NSLog(@"keyboardWindow = %@", keyboardWindow);
    for (UIView *keyboard in [keyboardWindow subviews]) {
        NSLog(@"keyboard = %@", keyboard);

            if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) {
                // THERE'S NO VIEW 'UIKeyboard'!!!
            }

    }
}

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

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