原文摘自:http://blog.csdn.net/iukey/article/details/7242488
預設情況下開啟鍵盤會遮住下面的view,帶來一點點困擾,不過這不是什麼大問題,我們使用點小小的手段就可以解決。
首先我們要知道鍵盤的高度是固定不變的,不過在IOS 5.0 以後鍵盤的高度貌似不是216了,不過不要緊,我們調整調整就是了:
|
iPhone |
ipad |
豎屏(portrait) |
216 |
264 |
橫屏(landScape) |
140 |
352 |
我們採取的方法就是在textField(有可能是其他控制項)接收到彈出鍵盤事件時把self.view整體上移216px了(我們就以iPhone豎屏為例了)。
有關View的frame,origin,size之類的知識點不懂的請參看我的另一篇博文: <<有關View的幾個基礎知識點>>
首先我們要設定textField的代理,我們就設為當前控制器了。
textField,delegate=self;
然後我們在當前控制器實現下面三個委託方法:
[java] view plaincopyprint?
- - (void)textFieldDidBeginEditing:(UITextField *)textField
- { //當點觸textField內部,開始編輯都會調用這個方法。textField將成為first responder
- NSTimeInterval animationDuration = 0.30f;
- CGRect frame = self.view.frame;
- frame.origin.y -=216;
- frame.size.height +=216;
- self.view.frame = frame;
- [UIView beginAnimations:@"ResizeView" context:nil];
- [UIView setAnimationDuration:animationDuration];
- self.view.frame = frame;
- [UIView commitAnimations];
- }
[java] view plaincopyprint?
- - (BOOL)textFieldShouldReturn:(UITextField *)textField
- {//當使用者按下ruturn,把焦點從textField移開那麼鍵盤就會消失了
- NSTimeInterval animationDuration = 0.30f;
- CGRect frame = self.view.frame;
- frame.origin.y +=216;
- frame.size. height -=216;
- self.view.frame = frame;
- //self.view移回原位置
- [UIView beginAnimations:@"ResizeView" context:nil];
- [UIView setAnimationDuration:animationDuration];
- self.view.frame = frame;
- [UIView commitAnimations];
- [textField resignFirstResponder];
- }