изменить размер UIView при отображении клавиатуры для iphone, как?
Я покажу вам пример с хорошо известным WhatsApp. Когда вы касаетесь текста внутри текста, всплывает клавиатура, поэтому мне нужно переместить или сдвинуть всю эту полосу вверх и уменьшить размер представления до половины, чтобы я все еще мог видеть текст, который я ' m ввод и кнопка отправки
#define kOFFSET_FOR_KEYBOARD 280.0
- (void)keyboardWillHide:(NSNotification *)notif {
[self setViewMoveUp:NO];
}
- (void)keyboardWillShow:(NSNotification *)notif{
[self setViewMoveUp:YES];
}
- (void)textFieldDidBeginEditing:(UITextField *)textField {
stayup = YES;
[self setViewMoveUp:YES];
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
stayup = NO;
[self setViewMoveUp:NO];
}
//method to move the view up/down whenever the keyboard is shown/dismissed
-(void)setViewMoveUp:(BOOL)moveUp
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3]; // if you want to slide up the view
[UIView setAnimationBeginsFromCurrentState:YES];
CGRect rect = self.view.frame;
if (moveUp)
{
// 1. move the view's origin up so that the text field that will be hidden come above the keyboard
// 2. increase the size of the view so that the area behind the keyboard is covered up.
if (rect.origin.y == 0 ) {
rect.origin.y -= kOFFSET_FOR_KEYBOARD;
//rect.size.height += kOFFSET_FOR_KEYBOARD;
}
}
else
{
if (stayup == NO) {
rect.origin.y += kOFFSET_FOR_KEYBOARD;
//rect.size.height -= kOFFSET_FOR_KEYBOARD;
}
}
self.view.frame = rect;
[UIView commitAnimations];
}
Попробуйте эти методы. Отредактируйте его в соответствии с вашими требованиями.
personAdarsh V Cschedule23.03.2011
comment
хорошо, я использовал ваш код, и он РАБОТАЛ :) Мне пришлось поставить вместо void, IBAction и назначить события для textedit, я до сих пор не знаю роль keyboardWillHide и keyboardWillShow и как их использовать, .., для скрытия клавиатуры я использовал stackoverflow.com/questions/2586937/. спасибо за это чудесное решение
- personPartySoft; 30.03.2011
comment
В некоторых сценариях тайминги анимации могут быть не идеальными, если мы используем textFieldDidBeginEditing и textFieldDidEndEditing, поэтому мы можем использовать keyboardWillShow и keyboardWillHide для соответствующей настройки этого времени. Эти два метода срабатывают немного раньше. В любом случае в вашем случае я думаю, что textFieldDidBeginEditing и textFieldDidEndEditing достаточно. :)
- personAdarsh V C; 30.03.2011
comment
оставаться вверх = ДА; Что остается здесь?
- personMinkle Garg; 01.09.2011
comment
Некоторые клавиатуры бывают разных размеров (например, для японского ввода). Чтобы сделать это правильно, вам нужно получить границы клавиатуры из значения UIKeyboardFrameEndUserInfoKey в словаре уведомлений.
- persondavehayden; 10.03.2012
comment
Большое Вам спасибо . отлично работает :)
- personErhan Demirci; 20.08.2013
Вы захотите послушать UIKeyboardDidShowNotification и UIKeyboardDidHideNotification, и в методе, который соответствует указанному вами селектору, центр уведомлений изменяет размер ваших представлений по желанию (обычно путем изменения свойства UIView.frame)