iOS_經(jīng)驗(yàn)(6)_Keyboard_高度處理

一丶鍵盤(pán)問(wèn)題

1.解決鍵盤(pán)彈起,擋住文本框的問(wèn)題;

二丶解決方案:

① 簡(jiǎn)易處理

第三方,一句話搞定;

IQKeyboardManager

其他博客詳細(xì)介紹:
http://www.itdecent.cn/p/9d7d246bd350/comments/1518291

使用:
#import <IQKeyboardManager.h>

② 自定義化處理
采用NSNotification

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
//監(jiān)聽(tīng)鍵盤(pán)改變
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(KeyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
}
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
//取消監(jiān)聽(tīng)
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];
}

#pragma mark - notification
- (void)KeyboardWillChangeFrame:(NSNotification *)notification
{
    NSDictionary *info = [notification userInfo];
    CGRect endKeyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    CGRect tmpViewRect = self.view.frame;
    if (endKeyboardRect.origin.y == [UIScreen height])
    {
        //下降
        tmpViewRect.origin.y = 0;
    }
    else
    {
        //上升
        CGFloat maxY = CGRectGetMaxY(self.backView.frame);
        CGFloat spaceH = [UIScreen height] - maxY;
        CGFloat keyboardH = endKeyboardRect.size.height;
        if (spaceH < keyboardH) {
            tmpViewRect.origin.y = - (keyboardH - spaceH);
        }
    }
     self.view.frame = tmpViewRect;
}

三丶注意事項(xiàng)

1.添加監(jiān)聽(tīng)者,和取消監(jiān)聽(tīng)者寫(xiě)的位置在生命周期上是相對(duì)的;
2.別忘記取消監(jiān)聽(tīng);

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

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

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