• iOS 监听键盘高度,输入框上升


     1 //设置输入框 ---《因为输入框用了get方法,所以第一次调用输入框要用self 调用》;
    2 self.textlab.frame=CGRectMake(20, 420, 250, 30); 3 _textlab.layer.borderColor=[UIColor blueColor].CGColor; 4 _textlab.layer.borderWidth= 0.5f; 5 _textlab.backgroundColor=[UIColor colorWithRed:0.830 green:0.801 blue:0.881 alpha:1.000]; 6 7 //添加输入框到视图 8 [self.view addSubview:self.textlab]; 9 10 //监听键盘,键盘出现 11 [[NSNotificationCenter defaultCenter]addObserver:self
    selector:@selector(keyboardwill:)
    name:UIKeyboardWillShowNotification object:nil]; 12 13 //监听键盘隐藏 14 [[NSNotificationCenter defaultCenter]addObserver:self
    selector:@selector(keybaordhide:)
    name:UIKeyboardWillHideNotification object:nil]; 15 16 //设置点击手势,当点击空白处,结束编辑,收回键盘 17 UITapGestureRecognizer *tapp=[[UITapGestureRecognizer alloc]
    initWithTarget:self action:@selector(tapAction:)];
    18 //开启交互 19 self.view.userInteractionEnabled=YES; 20 //添加手势到视图 21 [self.view addGestureRecognizer:tapp];

     2、里面方法的实现

     1 //点击手势方法
     2 -(void)tapAction:(UITapGestureRecognizer *)sender
     3 {
     4     [self.view endEditing:YES];
     5 }
     6 
     7 //当键盘出现时,调用此方法
     8 -(void)keyboardwill:(NSNotification *)sender
     9 {
    10     //获取键盘高度
    11     NSDictionary *dict=[sender userInfo];
    12     NSValue *value=[dict objectForKey:UIKeyboardFrameEndUserInfoKey];
    13     CGRect keyboardrect = [value CGRectValue];
    14     int height=keyboardrect.size.height;
    15     
    16     //如果输入框的高度低于键盘出现后的高度,视图就上升;
    17     if ((_textlab.frame.size.height + _textlab.frame.origin.y)>(self.view.frame.size.height - height))
    18     {
    19         self.view.frame = CGRectMake(0, -height, self.view.frame.size.width, self.view.frame.size.height);
    20     }
    21 }
    22 
    23 //当键盘隐藏时候,视图回到原定
    24 -(void)keybaordhide:(NSNotification *)sender
    25 {
    26      self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    27 }
    28 
    29 //输入框的get方法
    30 -(UITextField *)textlab
    31 {
    32     if (_textlab==nil)
    33     {
    34         _textlab=[UITextField new];
    35     }
    36     return _textlab;
    37 }

     防止键盘遮挡方式二;

    调用UITextField 输入框的代理方法 <UITextFieldDelegate>

     1 //开始编辑输入框的时候,软键盘出现,执行此事件
     2 -(void)textFieldDidBeginEditing:(UITextField *)textlab
     3 {
     4     //获取当前输入框的位置信息
     5     CGRect frame = textlab.frame;
     6     //获取键盘底部位置与键盘最高点之间的距离,键盘高度256
     7     int offset = frame.origin.y + frame.size.height - (self.view.frame.size.height - 256.0);
     8     //设置视图上升的时间
     9     NSTimeInterval animaTime = 0.30f;
    10     //字符串随意也行...
    11     [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
    12     //添加视图上的上升时间0.3f
    13     [UIView setAnimationDuration:animaTime];
    14     
    15     //将视图的Y坐标向上移动offset个单位,以使下面腾出地方用于软键盘的显示
    16     if(offset > 0)
    17         self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);
    18     //提交动画
    19     [UIView commitAnimations];
    20 }
    //当用户按下return键或者按回车键,keyboard消失
    -(BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        //收回键盘第一响应者意思...
        [textField resignFirstResponder];
        return YES;
    }
    
    //输入框编辑完成以后,将视图恢复到原始状态
    -(void)textFieldDidEndEditing:(UITextField *)textField
    {
        self.view.frame =CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    }
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 Torry的困惑(提高型)
    Java实现 蓝桥杯VIP 算法提高 Torry的困惑(提高型)
    Java实现 蓝桥杯VIP 算法提高 Torry的困惑(提高型)
    Java实现 蓝桥杯VIP 算法提高 计算时间
    关于编译器和链接器的一个实验
    Windows下获取逻辑cpu数量和cpu核数量(用GetLogicalProcessorInformation,从XP3才开始有的API)
    计算机底层数据的处理方式(汇编后将所有数据都转化为补码二进制数据,所有类型信息都会消失)
    值得推荐的C/C++框架和库
    Delphi子类调用祖父类的虚函数
    [Framework Design Guideline]
  • 原文地址:https://www.cnblogs.com/qq95230/p/4649623.html
Copyright © 2020-2023  润新知