我被困在这里,
我在视图中有一个自定义滚动视图,此滚动视图有一个添加字段按钮,允许用户将新文本字段添加到滚动视图。当用户点击某个特定的文本字段时,键盘出现并隐藏文本字段,为了克服这个问题,我按照UICatalog示例进行了操作,但它将整个滚动视图向上移动
为了防止这种情况,我按照UICatalog示例进行了操作
-(void)textFieldDidBeginEditing:(UITextField *)sender
{
if (sender.frame.origin.y>109) {
moveScrollViewUpBy=(sender.frame.origin.y-109+10);
[self viewMovedUp:YES];
}
}
-(void)viewMovedUp:(BOOL)movedUp
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = formScrollView.frame;
if (movedUp)
{
if(rect.origin.y == 0.0f){
rect.origin.y -= kOFFSET_FOR_KEYBOARD;
rect.size.height += kOFFSET_FOR_KEYBOARD;
}
}
else
{
if(rect.origin.y != 0.0f){
rect.origin.y += kOFFSET_FOR_KEYBOARD;
rect.size.height -= kOFFSET_FOR_KEYBOARD;
}
}
self.formScrollView = rect;
[UIView commitAnimations];
}
这里
#define kOFFSET_FOR_KEYBOARD 160.0
但这会将滚动视图向上移动,
我希望当我在滚动视图中点击下方的文本字段时...滚动视图滚动并显示该文本字段....
是否可以这样做....否则建议我一些其他解决方案
我还有一个查询srollview只是在键盘停留在屏幕上时停止滚动。有没有办法克服这个
答案 0 :(得分:2)
您可能只想设置scrollView的contentOffset属性,而不是调整其边界。
答案 1 :(得分:1)
实施UITextViewDelegate并执行以下操作:
- (void)textViewDidBeginEditing:(UITextView *)textView {
keyboardShowing = YES; //helper ivar
[self sizeToOrientation];
[self.scrollView scrollRectToVisible:textView.frame animated:YES];
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
keyboardShowing = NO;
[self sizeToOrientation];
}
帮助方法:
//fit to the appropriate view sizes
- (void)sizeToOrientation {
CGSize size;
if( keyboardShowing )
size = CGSizeMake(320, 190); //make room for keyboard
else
size = CGSizeMake(320, 420); //full height with tabbar on bottom
self.scrollView.frame = CGRectMake(0, 0, size.width, size.height);
}
这适合我。