Ответ 1
Я думаю, вы хотите inputAccessoryView.
В принципе, вы создаете представление и устанавливаете его как текстовое поле или вид вспомогательного вида ввода текста.
[textField setInputAccessoryView:inputAccessoryView];
У меня есть панель инструментов, и я бы хотел разместить ее поверх клавиатуры.
В уведомлении 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];
}
}
Я думаю, вы хотите inputAccessoryView.
В принципе, вы создаете представление и устанавливаете его как текстовое поле или вид вспомогательного вида ввода текста.
[textField setInputAccessoryView:inputAccessoryView];
Вот код на тот случай, если кому-то это понадобится. Наверху
- (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];
}
https://github.com/asefnoor/IQKeyboardManager
Это лучший обработчик клавиатуры, который я видел. Очень отличный способ управления вводом текста.
Некоторые из его особенностей: 1) ZERO LINE OF CODE
2) Автоматически работает
3) Больше нет UIScrollView
4) Нет дополнительных подклассов
5) Нет дополнительной ручной работы
6) Нет больше #imports
Простое решение для 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];
}
если вы хотите добавить панель инструментов на клавиатуре, вы находитесь в нужном месте. Вы можете легко использовать 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