Objective c 当键盘出现时,向上滑动窗体

Objective c 当键盘出现时,向上滑动窗体,objective-c,cocoa-touch,Objective C,Cocoa Touch,您好,我正在使用表单输入数据, 一些文本字段位于表单的底部。 当我点击文本字段进行书写时,键盘会出现并隐藏它后面的字段。若我让textfield first responder隐藏键盘,但这样做我无法做到这一点。 我想知道,当键盘出现时,整个表单将以我最后一个字段出现在键盘op上的方式向上移动,这是怎么可能的 提前感谢在滚动视图中添加所有视图,设置滚动视图和文本字段的委托,然后使用这些委托和方法- - (BOOL)textFieldShouldBeginEditing:(UITextField

您好,我正在使用表单输入数据, 一些文本字段位于表单的底部。 当我点击文本字段进行书写时,键盘会出现并隐藏它后面的字段。若我让textfield first responder隐藏键盘,但这样做我无法做到这一点。 我想知道,当键盘出现时,整个表单将以我最后一个字段出现在键盘op上的方式向上移动,这是怎么可能的
提前感谢

在滚动视图中添加所有视图,设置滚动视图和文本字段的委托,然后使用这些委托和方法-

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

   [self scrollViewToCenterOfScreen:textField];     
    return YES;

}

-(BOOL) textFieldShouldReturn:(UITextField *)textField{

    if ([textField isEqual:txtField1])
    {
        [txtField2 becomeFirstResponder];
    }
    else if ([textField isEqual:txtField2])
    {
        [txtField3 becomeFirstResponder];
    }
    else 
    {
        [textField resignFirstResponder];       
        [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
    }

    return YES;

}

- (void)scrollViewToCenterOfScreen:(UIView *)theView {  
    CGFloat viewCenterY = theView.center.y;  
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];  

    CGFloat availableHeight = applicationFrame.size.height - 200;            // Remove area covered by keyboard  

    CGFloat y = viewCenterY - availableHeight / 2.0;  
    if (y < 0) {  
        y = 0;  
    }  
    [scrollView setContentOffset:CGPointMake(0, y) animated:YES];  

}
-(BOOL)textField应该开始编辑:(UITextField*)textField{
[自滚动查看屏幕:文本字段];
返回YES;
}
-(BOOL)textField应返回:(UITextField*)textField{
if([textField isEqual:txtField1])
{
[txtField2成为第一响应者];
}
else if([textField isEqual:txtField2])
{
[txtField3成为第一响应者];
}
其他的
{
[textField resignFirstResponder];
[scrollView setContentOffset:CGPointMake(0,0)动画:是];
}
返回YES;
}
-(无效)滚动ViewToEnterofScreen:(UIView*)视图{
CGFloat viewCenterY=视图中心y;
CGRect applicationFrame=[[UIScreen mainScreen]applicationFrame];
CGFloat availableHeight=applicationFrame.size.height-200;//删除键盘覆盖的区域
CGFloat y=viewCenterY-可用高度/2.0;
如果(y<0){
y=0;
}  
[scrollView setContentOffset:CGPointMake(0,y)动画:是];
}

可以使用几种策略来实现这一点,其中大多数策略包括在UIScrollView中包装视图,并在视图获得焦点时滚动到相应的控件。您可以在此处找到有关如何执行此操作的苹果文档:

请按照链接获取解决方案:

另请参阅:。