2012-06-27 2 views
0

У меня есть экземпляр UIToolbar, который содержит UITextField внутри. Я хотел бы установить панель инструментов в виде аксессуаров для содержащегося в нем UITextField.Неисправность UIKeyboard аксессуар вид

Как я сделать это следующим образом:

[myTextView setInputAccessoryView:myToolbar]; 

Когда я скомпилировать и запустить код, вся клавиатура исчезает при нажатии на текстовое поле. Я специально убедился, что устанавливаю inputAccessoryView, а не inputView. Кажется, что все входные данные только что были заменены, без какого-либо явного указания на это.

Кто-нибудь знает способ исправить это?

ответ

5

Как правило, не удобно размещать текстовое поле в представлении вспомогательного устройства ввода ... Что было бы лучше, если вы поместите панель инструментов в нижней части своего вида, а затем используйте UIKeyboardWillChangeFrameNotification для перемещения панели инструментов с клавиатуры. .

в вашем viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil]; 

И где-то в коде вашей точки зрения контроллера:

-(void) keyboardWillChange:(NSNotification*)notify { 

    CGRect endFrame; 
    float duration = [[[notify userInfo] valueForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]; 
    [[[notify userInfo] valueForKey:UIKeyboardFrameEndUserInfoKey] getValue:&endFrame]; 
    endFrame = [self.view convertRect:endFrame fromView:nil]; 
    float y = (endFrame.origin.y > self.view.bounds.size.height ? self.view.bounds.size.height-44 : endFrame.origin.y-44); 

    [UIView animateWithDuration:duration animations:^{ 
     toolbar.frame = CGRectMake(0, y, self.view.bounds.size.width, 44); 
    }]; 

} 
+0

это похоже, что встроенный в приложение Messages делает с панель ввода текста. – Dima

+0

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

+0

В этом случае это endFrame чтобы я переместил панель инструментов в правильном направлении? (вверх, когда клавиатура появляется вверх и вниз, когда она исчезает?) –