国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS-鍵盤常見處理,自定義鍵盤上的工具條、定義鍵自盤方法等

2019-11-14 18:27:54
字體:
來源:轉載
供稿:網友

場景一說明

在iOS開發中,我們經常處理這樣的情況:

當鍵盤出現或者消失的時候,我們需要做一些相應的操作。比如鍵盤上面的工具條的位置變化等。

這里我們就假設有一個工具條在鍵盤的上面,我們要求當鍵盤出現的時候,工具條的位置向上移動始終在鍵盤的上面,當鍵盤消失的時候,工具條向下移動到屏幕的下面。

這時候,我們應該怎么處理呢?

思路

  • 為了讓工具條上下移動,我們就要求出鍵盤上下移動的高度值,從而知道工具條該上下移動的高度值
  • 想獲取鍵盤的移動值,就要對鍵盤的顯示和隱藏進行監聽,我們這里可以使用通知

是不是覺得思路很清晰了,那么開始吧。

處理步驟

  • 1、給鍵盤設一個通知

    /** *  給鍵盤的frame改變添加監聽 *  @param keyBoardWillChangeFrame: 監聽方法 */[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyBoardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
  • 2、在鍵盤的通知監聽方法里面做需要的操作

  - (void)keyboardWillChangeFrame:(NSNotification *)notification{    // 鍵盤顯示/隱藏完畢的frame    CGRect frame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];    // 修改底部約束    self.bottomSapce.constant = XMGScreenH - frame.origin.y;    // 動畫時間    CGFloat duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];    // 動畫    [UIView animateWithDuration:duration animations:^{        [self.view layoutIfNeeded];    }];}

上一段代碼解釋:

notification.userInfo:

  • notification是指傳遞過來的通知
  • userInfo是一個字典,存儲任何和通知相關聯的可能用到的信息。當一個通知的值發生改變的時候,就會將值存儲到userInfo的字典中。例如這里的userInfo包含通知執行的時間,和通知結束時候鍵盤的frame等信息。
  • 也可以改變工具條的transform實現:
    self.toolbar.transform = CGAffineTransformMakeTranslation(0, -keyboardF.size.height);

自定義鍵盤,只需要設置下面的屬性即可

@PRoperty (readwrite, retain) UIView *inputView;

最后,一定要記得在dealoc方法里釋放監聽

- (void)dealloc{    [[NSNotificationCenter defaultCenter] removeObserver:self];}

場景二說明

有時候在同一個界面里面,可能有多個TextField輸入框,而點擊不同額輸入框,我們可能希望彈出的鍵盤擁有不同的工具條,這時候我們怎么辦呢?

思路

  • 首先我們要有那么幾種工具條,可以使用xib方式(簡單,不講解了了,不知道可以發郵件給我)
  • 然后設置不同輸入框的配件視圖(textField.inputaccessoryView = xxxTool)
  • 設置輸入框成為第一響應者,這樣彈出的時候就能有不同的toolBar了。

代碼實現

//這里不貼圖了,比較簡單UIView *tool1 = [[[NSBundle mainBundle] loadNibNamed:@"ToolBar1" owner:nil options:nil] lastObject];UIView *tool2 = [[[NSBundle mainBundle] loadNibNamed:@"ToolBar2" owner:nil options:nil] lastObject];self.textField1.inputAccessoryView = tool1;self.textField2.inputAccessoryView = tool2;

常用知識點:

成為第一響應者(可以調出鍵盤)

- (BOOL)becomeFirstResponder;

取消第一響應者

- (BOOL)resignFirstResponder;

全部取消第一響應者

- (BOOL)endEditing:(BOOL)force;    //使用這個使得view或者其所有的子視圖都取消第一響應者 (optionally force)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 随州市| 彩票| 克拉玛依市| 洪雅县| 剑河县| 集安市| 永丰县| 莱西市| 周至县| 苗栗县| 呼伦贝尔市| 都昌县| 偃师市| 依安县| 绩溪县| 石景山区| 东城区| 齐齐哈尔市| 昂仁县| 滁州市| 巴里| 曲松县| 田阳县| 鞍山市| 英山县| 临桂县| 正安县| 剑川县| 陕西省| 安化县| 湖州市| 海门市| 北安市| 清丰县| 新巴尔虎右旗| 甘孜| 垦利县| 库伦旗| 榆林市| 逊克县| 忻州市|