UITText Fieldコントロールは、キーボードのポップアップを処理する際に、入力ボックスを隠します.
2758 ワード
原文の接続:
http://www.devdiv.com/thread-70159-1-1.html
次の3つの方法を実現します.ポップアップしたキーボードが入力枠を遮り、全体の画面が上に移動します.入力枠を遮ることができません.自分でUITText FieldDelegateを追加して依頼します.
iPhoneにしか対応していません.iPadをサポートしたいなら、216をiPadの上のキーボードの高さに変更すればいいです.
実際に使う時、キーボードは元のコントロールがなくなって、元の位置に戻りませんでした.20ピクセル上に移動しました.トップバッrのせいだと思います.22行のコードを下記のように変更すればいいです.
CGRect rect=CGRectMake(0.0f,20.0 f,self.view.frame.size.width,self.view.frame.size.height)
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)