Добавление панели инструментов поверх uikeyboard - программирование
Подтвердить что ты не робот

Добавление панели инструментов поверх uikeyboard

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

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

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

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];
        }
    }
4b9b3361

Ответ 1

Я думаю, вы хотите inputAccessoryView.

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

[textField setInputAccessoryView:inputAccessoryView];

Ответ 2

Вот код на тот случай, если кому-то это понадобится. Наверху

- (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

https://github.com/asefnoor/IQKeyboardManager

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

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

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

3) Больше нет UIScrollView

4) Нет дополнительных подклассов

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

6) Нет больше #imports

Ответ 4

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

Инициируйте свои textField, searchBar и т.д.

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

[searchBar setInputAccessoryView:self.customView];

- (BOOL)canBecomeFirstResponder{
    return true;
}

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

}

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

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

И метод

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

Ответ 5

если вы хотите добавить панель инструментов на клавиатуре, вы находитесь в нужном месте. Вы можете легко использовать 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 Link