iOS鍵盤彈出 視圖向上滾動(dòng)鍵盤高度

1.先添加對(duì)鍵盤的監(jiān)聽

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

當(dāng)系統(tǒng)消息出現(xiàn)UIKeyboardWillShowNotification和UIKeyboardWillHideNotification消息就會(huì)調(diào)用我們的keyboardWillShow和keyboardWillHide方法。

2.實(shí)現(xiàn)監(jiān)聽方法

#pragma mark ---- 根據(jù)鍵盤高度將當(dāng)前視圖向上滾動(dòng)同樣高度
///鍵盤顯示事件
- (void)keyboardWillShow:(NSNotification *)notification {
    //獲取鍵盤高度,在不同設(shè)備上,以及中英文下是不同的
    CGFloat kbHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
    
    //計(jì)算出鍵盤頂端到inputTextView panel底端的距離(加上自定義的緩沖距離INTERVAL_KEYBOARD)
    CGFloat offset = kbHeight;
    
    // 取得鍵盤的動(dòng)畫時(shí)間,這樣可以在視圖上移的時(shí)候更連貫
    double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    
    //將視圖上移計(jì)算好的偏移
    if(offset > 0) {
        [UIView animateWithDuration:duration animations:^{
            self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);
        }];
    }
}
#pragma mark ---- 當(dāng)鍵盤消失后,視圖需要恢復(fù)原狀
///鍵盤消失事件
- (void)keyboardWillHide:(NSNotification *)notify {
    // 鍵盤動(dòng)畫時(shí)間
    double duration = [[notify.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    //視圖下沉恢復(fù)原狀
    [UIView animateWithDuration:duration animations:^{
        self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    }];
}

3.注銷通知

-(void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}

4.然后在這里安利一個(gè)很好的第三方 IQKeyboardManager 特別好用
有需要的可以直接去下載 https://github.com/hackiftekhar/IQKeyboardManager

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇文章會(huì)對(duì) IQKeyboardManager 自動(dòng)解決鍵盤遮擋問題的方法進(jìn)行分析。 最近在項(xiàng)目中使用了 IQK...
    MissLu16閱讀 2,623評(píng)論 0 4
  • 來源:Draveness (https://github.com/Draveness) 鏈接:http://www...
    默默_David閱讀 735評(píng)論 0 1
  • 那些我曾經(jīng)想到過有你參與的未來,都已成為遙遠(yuǎn)的夢。 S小姐認(rèn)識(shí)T先生,是在大一上學(xué)期,快結(jié)束的時(shí)候。 在此之前,S...
    歡顏ling閱讀 447評(píng)論 0 0
  • 第一信念:?“天道酬勤”用勤奮贏得尊重;贏得成功 ?第二信念:“地道酬善”,上善若水,心懷敬畏,不需鋒芒畢露 ?第...
    游帥來也閱讀 290評(píng)論 0 0
  • 厚重的城墻終究抵不過歲月,一場場冷雨洗刷,昔日的血墻如今斑駁不矣,青色給人一種古樸的感覺,不過,墻角的芬芳顯得...
    地泉閱讀 326評(píng)論 0 0

友情鏈接更多精彩內(nèi)容