美文网首页iOS大牛修炼之路
iOS全局处理键盘事件

iOS全局处理键盘事件

作者: 才不是想成为啊 | 来源:发表于2016-04-06 17:45 被阅读1034次

最近做的项目中,有一个类似微信的聊天发送框,屏幕底端有一个输入框用textView来做,当textView成为第一响应者的时候它的Y值随着键盘高度的改变而改变,保证textView紧贴着键盘,但又不会被键盘挡住。


先来看一下关于键盘的一些通知代理

 //键盘显示发出通知
    UIKeyboardWillShowNotification
    UIKeyboardDidShowNotification
 //键盘隐藏发出通知
    UIKeyboardWillHideNotification
    UIKeyboardDidHideNotification
 // 键盘的frame发生改变时发出的通知(位置和尺寸)
    UIKeyboardWillChangeFrameNotification
    UIKeyboardDidChangeFrameNotification

注册通知来观察键盘的显示和隐藏

   [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardWillShowNotification
                                            object:nil];
    
   [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillHide:)
                                                 name:UIKeyboardWillHideNotification
                                               object:nil];

接着就是监听方法

#pragma 监听方法
- (void)keyboardWillShow:(NSNotification *)notify {//键盘弹起改变TextView位置
    
   //拿到键盘尺寸
    CGRect rect = [notif.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];

   //取得键盘高度
    CGFloat keyBoardHeight = rect.size.height;
    
  //TextView的y = 整个屏幕高度 - 键盘高度 - TextView的高度
     [UIView animateWithDuration: [notif.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue] animations:^{
        
        TextView.y = KSCREENHEIGHT -keyBoardHeight - TextView.height;
    }];
    
}

- (void)keyboardWillHide:(NSNotification *)notification {//键盘回收改变TextView的位置
    
//TextView的y = 整个屏幕高度 -  TextView的高度
    [UIView animateWithDuration:[notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue] animations:^{
        TextView.y = KSCREENHEIGHT  - TextView.height;
    }];
}

相关文章

  • iOS全局处理键盘事件

    最近做的项目中,有一个类似微信的聊天发送框,屏幕底端有一个输入框用textView来做,当textView成为第一...

  • 处理键盘事件

    介绍: 我们处理键盘事件时通常要写一大堆的代码,使用观察者模式虽然也可以实现,但是容易出错且非常麻烦,第三方库IQ...

  • ReactiveCocoa学习之路

    ReactiveCocoa 前言 在 iOS 编程中我们需要处理各种事件,例如响应按钮的点击,监听键盘的输入,监听...

  • iOS 事件以及手势的处理

    iOS 事件以及手势的处理 首先引用深入浅出iOS事件机制,iOS触摸事件处理详解,详解iOS触摸事件与手势识别三...

  • 2020-02-08

    键盘事件,v-for循环,事件控制,过滤器写法(公有,私有),全局指令写法

  • iOS键盘处理

    ios处理键盘 #pragma mark - Keyboard - (void)addKeyboardNoti {...

  • ios H5 input的输入框问题

    处理iOS 微信客户端 键盘收起页面未下移bug 处理iOS 微信客户端 键盘未获焦buginput 上面加上cs...

  • iOS自动处理键盘事件框架IQKeyBoardManager

    这个库是一个单例,它一旦生效,全项目任何界面都有效。让它生效的代码可以写在任意位置,我写在AppDelegate里...

  • React 事件总线EventBus,实现全局事件响应

    如何将事件进行全局响应? 通过引入events 包进行全局事件响应 全局事件响应的好处 可处理深层次组件传值,以及...

  • iOS键盘处理

    因为这是好久前的文章了重新整理下进行了排版,现在对于键盘处理可以大家可以直接使用IQKeyboardManager...

网友评论

    本文标题:iOS全局处理键盘事件

    本文链接:https://www.haomeiwen.com/subject/durmlttx.html