默認情況下打開鍵盤會遮住下面的view,帶來一點點困擾,不過這不是什麼大問題,我們使用點小小的手段就可以解決。
首先我們要知道鍵盤的高度是固定不變的,不過在IOS 5.0 以後鍵盤的高度貌似不是216了,不過不要緊,我們調整調整就是了:
iphoneipad
豎屏(portrait): 216 264
橫屏(landScape): 140 352
我們采取的方法就是在textField(有可能是其他控件)接收到彈出鍵盤事件時把self.view整體上移216px了(我們就以iPhone豎屏為例了)。
首先我們要設置textField的代理,我們就設為當前控制器了。
textField,delegate=self;
然後我們在當前控制器實現下面三個委托方法:
- - (void)textFieldDidBeginEditing:(UITextField *)textField
- { //當點觸textField內部,開始編輯都會調用這個方法。textField將成為first responder
- NSTimeInterval animationDuration = 0.30f;
- <span style="white-space:pre"> </span>float width = self.view.frame.size.width;
- float height = self.view.frame.size.height;
- <span style="white-space:pre"> </span>CGRect frame = CGRectMake(0.0f, -216,width,height);
- <span style="white-space:pre"> </span>//self.view整體上移216,其實就是把origin負向偏移
- <span style="white-space:pre"> </span>[UIView beginAnimations:@"ResizeView" context:nil];
- <span style="white-space:pre"> </span>[UIView setAnimationDuration:animationDuration];
- <span style="white-space:pre"> </span>self.view.frame = frame;
- [UIView commitAnimations];
- }
- - (BOOL)textFieldShouldReturn:(UITextField *)textField
- {//當用戶按下ruturn,把焦點從textField移開那麼鍵盤就會消失了
- <span style="white-space:pre"> </span>NSTimeInterval animationDuration = 0.30f;
- float width = self.view.frame.size.width;
- float height = self.view.frame.size.height;
- CGRect frame = CGRectMake(0.0f,0.0f,width,height);
- //self.view移回原位置
- [UIView beginAnimations:@"ResizeView" context:nil];
- [UIView setAnimationDuration:animationDuration];
- self.view.frame = frame;
- [UIView commitAnimations];