2011-10-19 37 views
0

我正在使用IOS开发人员库中的示例来管理键盘。 Text, Web and Edition Programming GuideIOS管理键盘 - 向上移动UIScrollView内容

我已经使用IB创建了一个视图。它是一个简单的UI,它有一个UIScrollView,UITextView,UIButton和一个UITextField。我将UIScrollView放在我的视图上,然后将所有其他控件添加为此滚动视图的子项。滚动视图通过IBOutlet“scrollView”暴露给viewcontroller。

下面的代码在用户设置焦点到textField时执行,但我从不会看到滚动条出现,滚动条的内容也不会移动。我应该能够默认看到滚动条吗?有人能告诉我我错过了什么吗?

-(void) keyboardWasShown:(NSNotification *)aNotification{ 

    NSDictionary * info = [aNotification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); 
    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 

    // If active text field is hidden by keyboard, scroll it so it's visible 
    // Your application might not need or want this behavior. 
    CGRect aRect = self.view.frame; 
    aRect.size.height -= kbSize.height; 
    if (!CGRectContainsPoint(aRect, activeField.frame.origin)) { 
     CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbSize.height); 
     [scrollView setContentOffset:scrollPoint animated:YES]; 
    } 
} 

同样,我直接从链接中的IOS编程指南中获取此代码。 UI布局看起来像一个基本的聊天窗口。我想在软键盘可见时将“输入”字段向上移动。谢谢! 更新

看来我需要添加一些填充来实际看到位于滚动视图底部的控件。

CGPoint scrollPoint = CGPointMake(0.0, (activeField.frame.origin.y - kbSize.height) + 10.0); 

我怎么没看到滚动条?

+0

你的问题标题建议你问 “我如何将我的scrollcontent了?”而你的问题实际上是“为什么滚动条指标不可见?”或“如何使滚动条指示器可见?”。你可能想编辑它。 – Aberrant

回答

0

滚动条应仅在用户交互时显示。这不是这种情况,因为你以编程方式设置滚动视图的插入。

如果你想显示滚动条,我相信UIScrollView定义了flashScrollIndicators方法,即应该显示滚动条。

1

IF YOU HAVE父视图AS SCROLL就用:UITextFielddelegate和设置方法

-(BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    if(textField == self.txtUserName) 
    { 
     [self.txtPassword becomeFirstResponder]; 
    } 
    else if(textField == self.txtPassword){ 
     [self.txtPassword resignFirstResponder]; 
     CGPoint bottomOffset = CGPointMake(0, 0); 
     [scrView setContentOffset:bottomOffset animated:YES]; 
     [textField resignFirstResponder]; 
    } 
    return YES; 
} 

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    if (textField == self.txtUserName) 
    { 
     CGPoint bottomOffset = CGPointMake(0, 80); 
     [scrView setContentOffset:bottomOffset animated:YES]; 
    } 
    if (textField == self.txtPassword) 
    { 
     CGPoint bottomOffset = CGPointMake(0, 135); 
    [scrView setContentOffset:bottomOffset animated:YES]; 
    } 

}