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);  

  • 相关阅读:
    4.Linux的目录结构
    使用idea创建spring mvc项目图文教程
    传统的Servlet在spring boot中怎么实现的?
    springboot系列教程导学篇
    记录一次序列化引起的问题解决办法 查看已编译类序列化值
    springboot支付项目之springboot集成jpa
    springboot支付项目之日志配置
    设计模式之状态模式总结篇
    看了这个Java实习生入职测试题后,幸亏我不是实习生
    幂等性学习及接口的幂等性
  • 原文地址:https://www.cnblogs.com/dongweiq/p/3746238.html
Copyright © 2011-2022 走看看