键盘覆盖在iPhone上的textview

时间:2013-01-08 13:18:32

标签: iphone objective-c ios6 uitextview uitextviewdelegate

我是iPhone应用程序的新手。以下就是我的......

enter image description here

当我输入项目名称时,我会获得带有完成选项的正确屏幕。当我点击Done时,键盘会被隐藏。

enter image description here

时间也一样。

现在当我点击描述并输入内容时,我会看到如下屏幕。

enter image description here

现在我的问题是,我看不到UITextView,因此我无法看到我正在输入的内容。

如何显示UITextView以便我可以看到我正在输入的内容。


更新1

enter image description here

4 个答案:

答案 0 :(得分:8)

首先将这些整个控件放在UIScrollView中并按原样设置,

仅在UITextView委托方法textViewDidBeginEditing之后设置视图框架如下...

-(void)textViewDidBeginEditing:(UITextView *)textView
{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.3];
    yourScrollView.frame = CGRectMake(yourScrollView.frame.origin.x, -160, yourScrollView.frame.size.width, yourScrollView.frame.size.height);
    [UIView commitAnimations];

}

并且像之前一样像往返一样设置相同...

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if ([text isEqualToString:@"\n"]) 
    {
        [textView resignFirstResponder];
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.3];

        yourScrollView.frame = CGRectMake(yourScrollView.frame.origin.x, 0, yourScrollView.frame.size.width, yourScrollView.frame.size.height);
        [UIView commitAnimations];
        return NO;
    }
    return YES;
}

您还可以设置UIView而不是UIScrollView ..

的框架

首先将代表发送给UITextView并在.h文件中添加此代理

我希望这对你有帮助......

答案 1 :(得分:2)

在viewDidLoad中为键盘隐藏/显示通知设置以下代码

  [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillBeHidden:)
                                                 name:UIKeyboardWillHideNotification object:nil];

并设置此方法并更改此代码中的视图

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

}

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

}

答案 2 :(得分:1)

将所有内容放在UIScrollView中,并使用scrollRectToVisible:animated:滚动到有效的TextField

此外,您必须根据键盘是否显示来调整滚动视图的大小,因此您需要设置TextField delegates

答案 3 :(得分:1)

在所有控件背后的设计中使用UIScrollView&在contentsize beginEditingTextView第二(时间)文本字段中设置TextFieldShouldReturn