2013-06-30 2 views
0

Я схожу с ума. Я попытаюсь переместить ToolBar со своим текстовым полем, когда появится клавиатура. С помощью следующего кода вид действительно движется, но ToolBar остается и получает скрытые с помощью клавиатуры:iOS move ToolBar с клавиатурой в UINavigationController

- (void) liftMainViewWhenKeybordAppears:(NSNotification*)aNotification{ 
NSDictionary* userInfo = [aNotification userInfo]; 
NSTimeInterval animationDuration; 
UIViewAnimationCurve animationCurve; 
CGRect keyboardFrame; 
[[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve]; 
[[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration]; 
[[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardFrame]; 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:animationDuration]; 
[UIView setAnimationCurve:animationCurve]; 

[self.view setFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y - keyboardFrame.size.height, self.view.frame.size.width, self.view.frame.size.height)]; 

[UIView commitAnimations]; 
} 

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

Панель инструментов и текстовое поле создаются в методе viewDidLoad.

ответ

1

self.view не содержит панель инструментов, вы должны переместить панель инструментов отдельно ...

+0

Спасибо, я думал, что панель инструментов является частью представления. Как я могу переместить ToolBar, созданный в методе 'viewDidLoad'? – JFS

+0

Когда вы создаете панель инструментов в коде, сохраните ее как свойство. Затем вы можете настроить его в любом месте ... –

+0

Хорошо, но ToolBar поставляется с контроллером навигации и отображается с помощью '[self.navigationController setToolbarHidden: NO];'. Как сохранить его как свойство? Нужно ли мне создавать и инициализировать пользовательскую ToolBar? – JFS

4

я понял, что сам ToolBar должен двигаться с клавиатурой: Это мешает ему получить скрыто появляется клавиатура:

enter image description here

при использовании ToolBar в NavigationController следующий код должен сделать трюк:

- (void) liftMainViewWhenKeybordAppears:(NSNotification*)aNotification 
{ 
NSDictionary* userInfo = [aNotification userInfo]; 
NSTimeInterval animationDuration; 
UIViewAnimationCurve animationCurve; 
CGRect keyboardFrame; 

[[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve]; 
[[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration]; 
[[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardFrame]; 


[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:animationDuration]; 
[UIView setAnimationCurve:animationCurve];  

[self.navigationController.toolbar setFrame:CGRectMake(self.navigationController.toolbar.frame.origin.x, 
                 self.navigationController.toolbar.frame.origin.y - keyboardFrame.size.height +self.navigationController.toolbar.frame.size.height, 
                 self.navigationController.toolbar.frame.size.width, 
                 self.navigationController.toolbar.frame.size.height)]; 
[UIView commitAnimations]; 

} 

Весь другой необходимый код довольно хорошо описан HERE.

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