Как добавить готовую кнопку на клавиатуре

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

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

как это

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

Кто-нибудь может мне помочь, пожалуйста.

1 ответ

Решение

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, панель инструментов с кнопкой" Done ""

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

http://blog.demay-fr.net/2009/07/cocoa-how-to-add-a-toolbar-with-button-on-top-of-a-uitextview-in-order-to-add-a-dismiss-button/

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"... Может быть, первый пример поможет вам на этом этапе, и вы сможете создать собственное решение.

Другие вопросы по тегам