iOS textview 隨鍵盤移動(dòng)

原理:監(jiān)聽鍵盤的兩個(gè)方法willAppearance 和willDismiss獲取鍵盤的范圍,然后設(shè)置textfield與底部約束的值。添加鍵盤監(jiān)聽

//添加鍵盤監(jiān)聽
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillAppearance:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillDismiss:) name:UIKeyboardWillHideNotification object:nil];

然后在監(jiān)聽辦法中獲取鍵盤的高度:這里的_textViewBottomConstraint是指textview和父容器底部的約束泥畅。

    CGRect keyboardFrame =    [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    CGFloat height = self.view.frame.size.height - keyboardFrame.origin.y;

    if (height == 0) {
        height = 15;
    }
    else {
        height = height - 40;
    }
    _textViewBottomConstraint.constant = height;

最后記得將監(jiān)聽移除:

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

如果能輸入的文字比較長,在輸入的時(shí)候,文字應(yīng)該能往上移胆敞,可以設(shè)置textview的高度約束,并在UITextViewDelegate的方法textViewDidChange中獲取文字的高度杂伟,并修改textView的高度約束:

-(void)textViewDidChange:(UITextView *)textView {
CGFloat height = [self getLabelFitSize:toBeString labelWidth:UI_SCREEN_FWIDTH - 30 font:F3].height;

if (height > _textViewHeightConstraint.constant) {
    _textViewHeightConstraint.constant = height;
}
}

 *  獲得label的合適尺寸
 *
 *  @param content    內(nèi)容
 *  @param labelWidth label的寬度
 *  @param font       文本的字體
 *
 *  @return label的合適尺寸
- (CGSize)getLabelFitSize:(NSString *)content labelWidth:(CGFloat)labelWidth font:(UIFont *)font {
CGSize size = CGSizeMake(labelWidth, MAXFLOAT); // 設(shè)置一個(gè)行高上限
CGSize returnSize;

NSDictionary *attribute = @{ NSFontAttributeName: font };
returnSize = [content boundingRectWithSize:size
                                   options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                attributes:attribute
                                   context:nil].size;

return returnSize;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末移层,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赫粥,更是在濱河造成了極大的恐慌观话,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件越平,死亡現(xiàn)場離奇詭異频蛔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)秦叛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門晦溪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挣跋,你說我怎么就攤上這事三圆。” “怎么了避咆?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵舟肉,是天一觀的道長。 經(jīng)常有香客問我查库,道長路媚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任樊销,我火速辦了婚禮整慎,結(jié)果婚禮上脏款,老公的妹妹穿的比我還像新娘。我一直安慰自己院领,他們只是感情好弛矛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著比然,像睡著了一般丈氓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上强法,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天万俗,我揣著相機(jī)與錄音,去河邊找鬼饮怯。 笑死闰歪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蓖墅。 我是一名探鬼主播库倘,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼论矾!你這毒婦竟也來了教翩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤贪壳,失蹤者是張志新(化名)和其女友劉穎饱亿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闰靴,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彪笼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚂且。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片配猫。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖膘掰,靈堂內(nèi)的尸體忽然破棺而出章姓,到底是詐尸還是另有隱情,我是刑警寧澤识埋,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站零渐,受9級(jí)特大地震影響窒舟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诵盼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一惠豺、第九天 我趴在偏房一處隱蔽的房頂上張望银还。 院中可真熱鬧,春花似錦洁墙、人聲如沸蛹疯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捺弦。三九已至,卻和暖如春孝扛,著一層夾襖步出監(jiān)牢的瞬間列吼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工苦始, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寞钥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓陌选,卻偏偏與公主長得像理郑,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咨油,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 聊天控制器(ChatViewController)界面搭建 14.聊天界面-工具條排版 1)搭建界面 添加聊天控制...
    夜空已沉寂閱讀 3,016評(píng)論 0 4
  • 文/羽觴 每天您炉,在這個(gè)時(shí)刻:0:00分 我總是會(huì)很準(zhǔn)時(shí)的刷卡下班 走出廠區(qū) ,月亮剛好在我的前額掛起 此刻臼勉,我很快...
    丁萬萬閱讀 504評(píng)論 1 1
  • 【第一章】突如其來的大火 【第二十章】愛恨一夜之間1 且說邻吭,方子逸本想了了與白玉雪之間的恩恩怨怨,卻因宋鵬飛的撞見...
    黃飛蝗閱讀 448評(píng)論 0 2