iOS基礎-小Demo--鍵盤彈出調整輸入框位置(TextView或者TextFiled)

有花堪折直須折,莫到無花空折枝!<轟隆雉雞>

效果圖:

自定義發送框適應鍵盤彈出

分析:
正常情況下底部發送的發送框固定好位置后, 鍵盤彈出會把它擋住!那么就需要我們在鍵盤彈出的時候改變我們發送框工具欄的位置;
思路:
首先: 整體上來看 textView 和 "聲音" "表情" "加號" 三個 Button 添加到一個 View上,然后對 View 進行約束, 這里需要其左邊距離(父視圖View)0,右邊距0, 下面0 然后固定一個高度
其次: 監聽鍵盤的行為當鍵盤彈出來的時候, 我們把發送框所在的 View 底部的約束進行適當的修改,讓其顯示在鍵盤的上方, 鍵盤消失后回到原來位置


代碼實現:

1: 把發送框所在 View 的距離下部的約束拉進響應控制器作為屬性

// 工具條底部約束
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *toolBottomConstraint;

2: 使用系統通話實現監聽鍵盤的行為

#pragma mark  通知監聽鍵盤彈出情況  使用的是系統的通知
#當鍵盤彈出的時候  執行kbWillShow:
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(kbWillShow:) name:UIKeyboardWillShowNotification object:nil];
#當鍵盤消失的時候 執行kbHideShow:
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(kbHideShow:) name:UIKeyboardWillHideNotification object:nil];```
3: 實現響應通知的方法
\#pragma mark  鍵盤彈出 觸發事件

```code
# 鍵盤彈出 調整約束的高度
- (void)kbWillShow:(NSNotification *)noti
{
// 獲取鍵盤的高度  首先獲取當前鍵盤的 Rect
    CGRect kbFram = [noti.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    CGFloat kbHeight = kbFram.size.height;
// 把約束改掉
    self.toolBottomConstraint.constant = kbHeight ;
  [UIView animateWithDuration:1 delay:0 options: UIViewAnimationOptionCurveEaseInOut  animations:^{
   // 布控子視圖
 [self.view layoutIfNeeded];

    } completion:nil];
}
# 鍵盤收起  一切回到夢開始的地方
- (void)kbHideShow:(NSNotification *)noti
{
    // 把約束改成開始的 0 
    self.toolBottomConstraint.constant = 0 ;
    [UIView animateWithDuration:0.1 delay:0 options: UIViewAnimationOptionCurveEaseInOut  animations:^{
// 布控子視圖 
[self.view layoutIfNeeded];

    } completion:nil];


}```

有時間在寫高度適應的問題, 最近寫點小項目! 加油!
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,099評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,200評論 4 61
  • 磚頭出差將近一周,剛好周五到無錫,他約我過來玩。從寧波到無錫兩三個小時的車程,周日他開會,我得一個人返程,想想都覺...
    麥子飛呀飛閱讀 246評論 0 0
  • 本文分享的大體框架包含以下三部分 (1)首先介紹html網頁,用來解析html網頁的工具xpath(2)介紹pyt...
    不忘初心c閱讀 2,578評論 0 14
  • 《隨園拍詩——拍的就是你》的初衷是通過對大家的作品的尖銳點評,把各位原先隱藏的缺點全部揭露出來,并加以改進,使大家...
    霙愔閱讀 398評論 1 1