当键盘存在iOS时,视图不会向上移动

时间:2016-08-25 16:05:32

标签: ios objective-c uitextfield

我正在尝试使用此代码

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog(@"%f",self.view.frame.origin.y);
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.25f];
    CGRect frame = self.view.frame;
    frame.origin.y =frame.origin.y -204;
    [self.view setFrame:frame];
    [UIView commitAnimations];
}


- (void)textFieldDidEndEditing:(UITextField *)textField
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.25f];
    CGRect frame = self.view.frame;
    frame.origin.y = frame.origin.y + 204;
    [self.view setFrame:frame];
    [UIView commitAnimations];
}

要在键盘存在时向上移动视图,但结果如下: enter image description here

成为这个:

enter image description here

无法弄清楚为什么以及是否必须对导航栏或约束做些什么。

3 个答案:

答案 0 :(得分:0)

为什么不使用这个名为IQKeyboardManager的漂亮图书馆。只需通过pods /手动添加它,让它完成你的工作

答案 1 :(得分:0)

阿列克谢索博列夫斯基所说的那种伎俩。基本上我需要将它们放在scrollview中并从滚动视图添加约束到下面的对象,然后将包含textfields的所有视图放在该scrollview中。这使一切正常。

答案 2 :(得分:0)

首先添加滚动视图。 然后编写以下代码。

//When return key press then bring the view back
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
   self.scrlView.contentOffset = CGPointMake(0, 0);
    return YES;
}

//When the text field begin editing then moves the view up
-(void)textFieldDidBeginEditing:(UITextField *)textField{
    self.scrlView.contentOffset = CGPointMake(0, 30);
}

//When ext field end editing then bring the view back
-(void)textFieldDidEndEditing:(UITextField *)textField{

     self.scrlView.contentOffset = CGPointMake(0, 0);
}