我将向您展示一个众所周知的whatsapp的例子 当您触摸文本内部键盘弹出时,我必须向上移动或移动所有栏,并将视图调整为一半,所以我仍然可以看到我正在键入的文本和发送按钮
阶段1: http://www.appbank.net/wp-content/uploads/2010/10/WhatsAppMessenger-18.jpg
阶段2: http://www.onetooneglobal.com/wp-content/uploads/2011/02/onetoone_whatsapp_2.png
实现这一目标的最佳方式是什么?
答案 0 :(得分:6)
#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];
}
尝试这种方法。根据您的要求进行编辑。
答案 1 :(得分:2)
您需要收听UIKeyboardDidShowNotification和UIKeyboardDidHideNotification,并且在与您提供的选择器对应的方法中,通知中心会随意调整您的视图大小(通常是通过更改UIView .frame属性)