UITText Fieldコントロールは、キーボードのポップアップを処理する際に、入力ボックスを隠します.


原文の接続:
http://www.devdiv.com/thread-70159-1-1.html
次の3つの方法を実現します.ポップアップしたキーボードが入力枠を遮り、全体の画面が上に移動します.入力枠を遮ることができません.自分でUITText FieldDelegateを追加して依頼します.
iPhoneにしか対応していません.iPadをサポートしたいなら、216をiPadの上のキーボードの高さに変更すればいいです.

- (void)keyboardWillShow:(NSNotification *)noti
{        
        //                 
        //     
        float height = 216.0;                
        CGRect frame = self.view.frame;        
        frame.size = CGSizeMake(frame.size.width, frame.size.height - height);        
        [UIView beginAnimations:@"Curl"context:nil];//              
        [UIView setAnimationDuration:0.30];           
        [UIView setAnimationDelegate:self];          
        [self.view setFrame:frame];         
        [UIView commitAnimations];         
}


- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{        
    // When the user presses return, take focus away from the text field so that the keyboard is dismissed.        
    NSTimeInterval animationDuration = 0.30f;        
    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];        
    [UIView setAnimationDuration:animationDuration];        
    CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);        
    self.view.frame = rect;        
    [UIView commitAnimations];        
    [textField resignFirstResponder];
    return YES;        
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{        
        CGRect frame = textField.frame;
        int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//    216
        NSTimeInterval animationDuration = 0.30f;                
        [UIView beginAnimations:@"ResizeForKeyBoard" context:nil];                
        [UIView setAnimationDuration:animationDuration];
        float width = self.view.frame.size.width;                
        float height = self.view.frame.size.height;        
        if(offset > 0)
        {
                CGRect rect = CGRectMake(0.0f, -offset,width,height);                
                self.view.frame = rect;        
        }        
        [UIView commitAnimations];                
}
また、自分で少し修正しました.
実際に使う時、キーボードは元のコントロールがなくなって、元の位置に戻りませんでした.20ピクセル上に移動しました.トップバッrのせいだと思います.22行のコードを下記のように変更すればいいです.
CGRect rect=CGRectMake(0.0f,20.0 f,self.view.frame.size.width,self.view.frame.size.height)