Добавление панели инструментов в верхней части клавиатуры - PullRequest
17 голосов
/ 25 января 2012

У меня есть панель инструментов, и я хотел бы разместить ее на верхней части клавиатуры.

В уведомлении клавиатурного шилла я попытался добавить панель инструментов на клавиатуру, но безуспешно, я не могу добавить

Пожалуйста, дайте мне знать

UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
    UIView* keyboard;
    for(int i = 0; i < [tempWindow.subviews count]; i++)
    {
        //Get a reference of the current view 
        keyboard = [tempWindow.subviews objectAtIndex:i];

        //Check to see if the description of the view we have referenced is "UIKeyboard" if so then we found
        //the keyboard view that we were looking for
        if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
        {
            [keyboard addSubview:myToolbar];
        }
    }

Ответы [ 5 ]

44 голосов
/ 25 января 2012

Я думаю, вам нужен inputAccessoryView .

По сути, вы создаете представление и устанавливаете его как вспомогательное представление ввода текста или текстового представления.

[textField setInputAccessoryView:inputAccessoryView];
14 голосов
/ 25 июля 2012

Вот код на случай, если кому-то еще это понадобится. Обнаружено переполнение стека

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
    numberToolbar.barStyle = UIBarStyleBlackTranslucent;
    numberToolbar.items = [NSArray arrayWithObjects:
                         [[UIBarButtonItem alloc]initWithTitle:@"Clear" style:UIBarButtonItemStyleBordered target:self action:@selector(clearNumberPad)],
                         [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                         [[UIBarButtonItem alloc]initWithTitle:@"Apply" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
                     nil];
    [numberToolbar sizeToFit];
    numberTextField.inputAccessoryView = numberToolbar;
}



-(void)clearNumberPad{
    [numberTextField resignFirstResponder];
    numberTextField.text = @"";
}

-(void)doneWithNumberPad{
    NSString *numberFromTheKeyboard = numberTextField.text;
    [numberTextField resignFirstResponder];
}
3 голосов
/ 21 декабря 2014

https://github.com/asefnoor/IQKeyboardManager

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

Некоторые из его функций 1) НОЛЬ ЛИНИЯ КОДА

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

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

4) Больше нет подклассов

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

6) Больше нет # import

1 голос
/ 17 февраля 2017

Если вы хотите добавить панель инструментов на клавиатуре, вы находитесь в правильном месте.Вы можете использовать BSKeyboard легко.Посмотрите на реализацию ниже:

в .h файле

#import "BSKeyboardControls.h"

добавьте делегатов

@interface ViewController : UIViewController <BSKeyboardControlsDelegate>

, теперь перейдите к файлу .m, перейдите к viewDidLoad.Мы добавим текстовое поле, к которому я хочу добавить tollbar

self.keyboardControls = [[BSKeyboardControls alloc] initWithFields:@[PINTextField]];
[self.keyboardControls addDelegate:self];

, мы должны добавить activeField, как показано ниже,

- (void)textFieldDidBeginEditing:(UIView *)textField {
    [self.keyboardControls setActiveField:textField];
}

И последний шаг - реализация методов делегата,

 - (void)keyboardControlsDonePressed:(BSKeyboardControls *)keyboardControls {
    [super textFieldShouldReturn:self.keyboardControls.activeField];
}

Вот и все.

Для получения дополнительной информации и загрузки файлов BSKeyboard, вы можете переместить ссылку ниже Ссылка BSKeyboard Githup

1 голос
/ 30 ноября 2015

Простое решение для iOS 8 и 9.

Инициатива textField, searchBar и т. Д.

customView - Вид, который будет прикреплен вверху клавиатуры. НЕ добавляйте это как подпредставление в иерархию! Не нужно устанавливать какие-либо ограничения или позиции.

[searchBar setInputAccessoryView:self.customView];

- (BOOL)canBecomeFirstResponder{
    return true;
}

- (UIView *)inputAccessoryView {
    return self.customView;

}

Если вам нужно оставить customView внизу и не скрывать его после закрытия клавиатуры, добавьте наблюдателя:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:self.view.window];

А, метод

- (void)keyboardDidHide:(NSNotification *)notification {
    [self becomeFirstResponder];
}
...