你好,我正在使用一个表单进行数据输入,表单中有一些文本字段位于底部。当我点击文本字段进行输入时,键盘会出现并将这些字段隐藏在后面。如果我让文本字段成为第一个响应者,它会隐藏键盘,但这样做会导致我不能完成输入操作。我想知道如何实现:当键盘出现时,整个表单应该向上移动,使得最后一个字段出现在键盘的顶部。谢谢!
你好,我正在使用一个表单进行数据输入,表单中有一些文本字段位于底部。当我点击文本字段进行输入时,键盘会出现并将这些字段隐藏在后面。如果我让文本字段成为第一个响应者,它会隐藏键盘,但这样做会导致我不能完成输入操作。我想知道如何实现:当键盘出现时,整个表单应该向上移动,使得最后一个字段出现在键盘的顶部。谢谢!
将所有的视图添加到一个滚动视图中,并设置滚动视图和文本字段的代理,然后使用这些代理和方法-
- (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];
}
有几种策略可以实现这个功能 - 大多数都涉及将您的视图包装在UIScrollView中,并在焦点移动到相应控件时滚动。您可以在此处找到苹果关于如何实现此功能的文档:http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html