iOS全局处理键盘事件

最近做的项目中,有一个类似微信的聊天发送框,屏幕底端有一个输入框用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;
    }];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,956评论 25 709
  • UITextField : 只能输入一行,不可以滚动,可以设置提醒文字。 UITextView: 能输入多行,可以...
    甜水八角阅读 3,462评论 0 5
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 昨天下午静心学习过程中,她大姑来一通电话,什么的一说,想想那些让人头疼的事儿,果然就上头了,到晚一直不爽吃了两粒药...
    劲汶阅读 183评论 0 0
  • 1、感赏家人越来越爱我啦,一周没有回家,今天中午回家吃饭,爸爸妈妈和姥姥见到我可开心了,跟我说这说那聊个没...
    o糖果罐o阅读 287评论 0 2