2014-09-25 1 views
1

Я знаю, как показать аксессуары для клавиатуры с помощью UITextField.показать клавиатуру с панелью инструментов на кнопке, нажатой в ios

textField.inputAccessoryView = keyboardToolBar; 

Но что, если у меня нет UITextField, но кнопка. Как показать клавиатуру с панелью инструментов?

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

Но как это будет работать?

Update

-(void)createKeyboardToolBar 
{ 
    self.keyboardToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 42)]; 
    self.textField = [[UITextField alloc] initWithFrame:CGRectMake(8, 6, 250, 30)]; 
    UIBarButtonItem *textBtn = [[UIBarButtonItem alloc] initWithCustomView:self.textField ]; 
    UIBarButtonItem *postBtn = [[UIBarButtonItem alloc]initWithTitle:@"Post" style:UIBarButtonItemStyleBordered target:self action:@selector(postComment)]; 
    [self.keyboardToolBar setItems: [NSArray arrayWithObjects:textBtn,postBtn,nil]]; 
    self.textField.inputAccessoryView = self.keyboardToolBar; 

} 

Так следующие предложения, я подхожу с приведенным выше кодом. Но когда я нажимаю кнопку, которая должна сделать self.textField первым ответчиком, вызов выполняется, но клавиатура или панель инструментов не отображаются. (Я использую NSLog)

+0

по щелчку кнопки отображения панели инструментов, содержащий текстовое поле, а затем, как только его видимый сделать текстовое поле в качестве первого ответчика – Geet

+0

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

ответ

0

для вашей кнопки добавить действие как buttonClicked. поэтому, когда вы нажимаете на кнопку show keyboard, используя , вы получите для вашего textfield.

- (void)buttonClicked { 

[myTextField becomeFirstResponder]; 

} 
0
  1. Alloc текстовое поле, панель инструментов во всем мире, и добавить его на панель инструментов.
  2. В действии кнопки напишите 'the firstresponder' для текстового поля.

Вот решение

- (IBAction)keyboardaction:(id)sender { 
    self.keyToolbar_.hidden=NO; 
    CGRect lframe = self.keyToolbar_.frame; 
    lframe.origin.y = [[UIScreen mainScreen] bounds].size.height-<keyboardheight>; 
    [self.entryTxfld_ becomeFirstResponder]; 

    [UIView animateWithDuration:0.3 
          delay:0 
         options:UIViewAnimationOptionCurveEaseInOut 
        animations:^ { 
         self.keyToolbar_.frame = lframe; 
        }completion:^(BOOL finished) { 

        }]; 

} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    CGRect lframe = self.keyToolbar_.frame; 
    lframe.origin.y = [[UIScreen mainScreen] bounds].size.height; 
    [UIView animateWithDuration:0.6 
          delay:0 
         options:UIViewAnimationOptionCurveEaseInOut 
        animations:^ { 
         self.keyToolbar_.frame = lframe; 
        }completion:^(BOOL finished) { 
        }]; 
    [textField resignFirstResponder]; 

    return YES; 
} 

enter image description here

В XIB для просмотра Добавить панель инструментов в нижней части и панель инструментов добавлена ​​ссылка textfield.For найти изображение. enter image description here

+0

PLZ добавить код также –

+0

Возможно, «рекурсия» является причиной того, что это не работает: textField будет одновременно причиной показа ToolBar и эффекта отображения панели инструментов. Возможно, что-то в iOS противоречит таким циклам зависимостей. –