zoukankan      html  css  js  c++  java
  • UITextField控件处理键盘弹出时遮住输入框的问题

    原文连接: 
    http://www.devdiv.com/thread-70159-1-1.html 

    实现以下三个方法,如果弹出的键盘会遮住输入框 ,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。 
    只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。

     1 - (void)keyboardWillShow:(NSNotification *)noti
     2 {        
     3         //键盘输入的界面调整        
     4         //键盘的高度
     5         float height = 216.0;                
     6         CGRect frame = self.view.frame;        
     7         frame.size = CGSizeMake(frame.size.width, frame.size.height - height);        
     8         [UIView beginAnimations:@"Curl"context:nil];//动画开始          
     9         [UIView setAnimationDuration:0.30];           
    10         [UIView setAnimationDelegate:self];          
    11         [self.view setFrame:frame];         
    12         [UIView commitAnimations];         
    13 }
    14 
    15 
    16 - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    17 {        
    18     // When the user presses return, take focus away from the text field so that the keyboard is dismissed.        
    19     NSTimeInterval animationDuration = 0.30f;        
    20     [UIView beginAnimations:@"ResizeForKeyboard" context:nil];        
    21     [UIView setAnimationDuration:animationDuration];        
    22     CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);        
    23     self.view.frame = rect;        
    24     [UIView commitAnimations];        
    25     [textField resignFirstResponder];
    26     return YES;        
    27 }
    28 
    29 - (void)textFieldDidBeginEditing:(UITextField *)textField
    30 {        
    31         CGRect frame = textField.frame;
    32         int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//键盘高度216
    33         NSTimeInterval animationDuration = 0.30f;                
    34         [UIView beginAnimations:@"ResizeForKeyBoard" context:nil];                
    35         [UIView setAnimationDuration:animationDuration];
    36         float width = self.view.frame.size.width;                
    37         float height = self.view.frame.size.height;        
    38         if(offset > 0)
    39         {
    40                 CGRect rect = CGRectMake(0.0f, -offset,width,height);                
    41                 self.view.frame = rect;        
    42         }        
    43         [UIView commitAnimations];                
    44 }

    另外我自己做了一点修改: 
    在实际用的时候,键盘消失原来的控件并没有回归都原来的位置,而是上移了20个像素,我估计是因为顶部Bar的原因,只要将22行代码改成如下就可以了: 
    CGRect rect = CGRectMake(0.0f, 20.0f, self.view.frame.size.width, self.view.frame.size.height);  

  • 相关阅读:
    hdoj 2803 The MAX【简单规律题】
    hdoj 2579 Dating with girls(2)【三重数组标记去重】
    hdoj 1495 非常可乐【bfs隐式图】
    poj 1149 PIGS【最大流经典建图】
    poj 3281 Dining【拆点网络流】
    hdoj 3572 Task Schedule【建立超级源点超级汇点】
    hdoj 1532 Drainage Ditches【最大流模板题】
    poj 1459 Power Network【建立超级源点,超级汇点】
    hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
    hdoj 1012 u Calculate e
  • 原文地址:https://www.cnblogs.com/dongweiq/p/3746238.html
Copyright © 2011-2022 走看看