2012-01-25 2 views
16

У меня есть панель инструментов, и я бы хотел разместить ее поверх клавиатуры.Добавление панели инструментов поверх 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]; 
     } 
    } 
+0

Что вы пробовали? –

+0

вы что-то пробовали? – Sarah

ответ

44

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

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

[textField setInputAccessoryView:inputAccessoryView]; 
+0

Неправильная ссылка (404) –

+0

Забавно, несколько часов назад она существовала. – vikingosegundo

+0

Я исправил его. Взгляни. – vikingosegundo

14

Вот код в случае, если кто-то другой необходимости it.Found на переполнение стека

- (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) нулевой линии КОД

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

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

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

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

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

1

Простое решения для прошивки 8 и 9.

Init вашего textField, searchBar и т.д.

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

[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]; 
} 
1

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

в файле .h

#import "BSKeyboardControls.h" 

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

@interface ViewController : UIViewController <BSKeyboardControlsDelegate> 

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

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

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

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

И последний шаг делегируют metods implemantation,

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

Вот и все.

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

Смежные вопросы