美文网首页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全局处理键盘事件

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