-2

可能重复:
让视图向上滑动为键盘腾出空间?
Xcode/iOS5:当键盘出现时,向上移动 UIView

当我们通常在文本字段中输入数据时,键盘会出现,它会隐藏我们在字段中输入的数据,所以屏幕是否应该向上滑动,以便我们可以看到在字段中输入的数据。

4

2 回答 2

1

试试这个代码.......

 -(void)setViewMovedUp:(BOOL)movedUp
 {
 [UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3]; // if you want to slide up the view

CGRect rect = self.view.frame;
if (movedUp)
{
    rect.origin.y -= moveKeyboard;
}
else
{
    rect.origin.y += moveKeyboard;
}
self.view.frame = rect;
[UIView commitAnimations];
}

  -(void)keyboardWillShow
 {
// Animate the current view out of the way
if (self.view.frame.origin.y >= 0)
{
    [self setViewMovedUp:YES];
}
else if (self.view.frame.origin.y < 0)
{
    [self setViewMovedUp:NO];
}
 }


 -(void)keyboardWillHide
 {
if (self.view.frame.origin.y >= 0)
{
    [self setViewMovedUp:YES];
}
else if (self.view.frame.origin.y < 0)
{
    [self setViewMovedUp:NO];
}
}


 - (void)viewWillAppear:(BOOL)animated
 {
[super viewWillAppear:animated];
// register for keyboard notifications
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow)
                                             name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide)
                                             name:UIKeyboardWillHideNotification object:nil];
 }
 - (void)viewWillDisappear:(BOOL)animated
 {
[super viewWillDisappear:animated];
// unregister for keyboard notifications while not visible.
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
 }

编辑:moveKeyboard 是浮动的。根据您的需要设置其值。

于 2013-02-01T05:30:19.820 回答
0

有通知 ( UIKeyboard[Will|Did][Show|Hide]Notification) 告诉您键盘即将出现或消失,您可以使用这些通知来触发移动视图的代码。有不同的方式来移动视图——你可以自己移动它们,根据需要调整它们的位置;您可以将它们全部放在一个视图中,这样您只需要移动容器;或者您可以将它们嵌入到滚动视图中并简单地调整滚动视图的内容偏移量。

请参阅 Apple 的文档管理键盘,尤其是名为“移动位于键盘下方的内容”的部分。那里也有示例代码,而且效果很好。

于 2013-02-01T05:25:01.480 回答