Как получить клавиатуру с кнопками Next, Previous и Done?

Я хочу иметь клавиатуру, на которой есть кнопка Next, Previous и Done.

Я видел это во многих приложениях.

Особенно там, где есть заполненные формы.

enter image description here

Я хочу добиться чего-то похожего на клавиатуру выше.

Как я могу это получить?

Ответ 1

Вы найдете ответ на этот другой пост. Я проверил библиотеку iOS и inputAccessoryView UITextField именно то, что вы ищете!

Надеюсь, это поможет!

Ответ 2

Я только что создал класс под названием BSKeyboardControls, что упрощает добавление элементов управления на клавиатуру. Класс, инструкции и примерный код можно найти здесь, в GitHub.

Элементы управления работают для текстовых полей и текстовых представлений и оптимизированы как для iPhone, так и для iPad.

Ответ 3

-(BOOL)textFieldShouldBeginEditing: (UITextField *)textField 

{
     UIToolbar * keyboardToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];

    keyboardToolBar.barStyle = UIBarStyleDefault;
    [keyboardToolBar setItems: [NSArray arrayWithObjects:
                                [[UIBarButtonItem alloc]initWithTitle:@"Previous" style:UIBarButtonItemStyleBordered target:self action:@selector(previousTextField)],

                                [[UIBarButtonItem alloc] initWithTitle:@"Next" style:UIBarButtonItemStyleBordered target:self action:@selector(nextTextField)],
                                [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                                [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignKeyboard)],
                                nil]];
    textField.inputAccessoryView = keyboardToolBar;

}



- (void)nextTextField {


    if (textField1) {

        [textField1 resignFirstResponder];
        [textField2 becomeFirstResponder];

    }

}

-(void)previousTextField
{

    if (textField2) {
        [textField2 resignFirstResponder];
        [textField1 becomeFirstResponder];
    }


}

-(void)resignKeyboard {

    [textField1 resignFirstResponder];
    [textField2 resignFirstResponder];

}

Ответ 4

У меня есть класс утилиты, который в основном делает это для вас.

https://github.com/kalvish21/CustomKeyboard

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

Ответ 5

https://github.com/hackiftekhar/IQKeyboardManager

Это лучший обработчик клавиатуры, который я когда-либо видел. Очень отличный способ управлять вводом текста.

Некоторые из его особенностей 1) ZERO LINE OF CODE

2) работает автоматически

3) Нет больше UIScrollView

4) Нет больше подклассов

5) Нет больше ручной работы

6) Нет больше # импорт

Ответ 6

Это настраиваемый элемент управления, который размещается непосредственно над клавиатурой. Я думаю, что UIToolbar может быть использован для этого.

Предыдущий и следующий проходы вокруг первогоResponder of textFields и Done сделают отставку, а также скройте панель инструментов.

Чтобы соответствовать анимации клавиатуры, посмотрите этот код Я нашел или в SO: "Какова скорость анимации клавиатуры по умолчанию iPhone?"

Ответ 8

Как упоминалось в других ответах, это inputAccessoryView, который вы ищете.

Я хотел бы добавить альтернативный путь здесь, используя эти cocoapods:

pod 'UITextField-Navigation'

Все UITextField будут иметь два дополнительных свойства: nextTextField и previousTextField. Затем вы можете просто подключить nextTextField в построителе интерфейса, а кнопки "Предыдущий", "Далее" и "Готово" будут добавлены автоматически для вас, все функциональные, больше не требуется кода, нет подкласса.

Вы также можете настроить пользовательский интерфейс, добавить другие кнопки и т.д., как вы хотите.

введите описание изображения здесь введите описание изображения здесь