監聽鍵盤的彈出與隱藏(界面跟隨鍵盤一起上下移動)

今天說一下點擊texeField時,讓界面跟着鍵盤一起上下移動的方法步驟

(本人原創博客代碼全部爲自己手敲,然後複製過來給大家看)

1.讓控制器監聽鍵盤frame發生改變的通知 :UIKeyboardWillChangeFrameNotification

 [[NSNotificationCenter defaultCenteraddObserver:selfselector:@selector(keyboardWillChangeFrame:)name:UIKeyboardWillChangeFrameNotification object:nil];


2.一旦鍵盤的frame發生改變,就執行一個自定義的方法,這個方法要有一個“通知”的參數

(NSNotification *)note


3.方法如下:

// 收到鍵盤frame發生變化的通知之後都會來調用此方法

- (void)keyboardWillChangeFrame:(NSNotification *)note {

 // 取出系統傳過的鍵盤信息,是一個字典

    NSDictionary *keyboardDict = note.userInfo;

    // 字典裏有keyboard的取出鍵盤變化之後的frame

   CGRect keyboardFrame = [keyboardDict[UIKeyboardFrameEndUserInfoKeyCGRectValue];

    

    //鍵盤怎麼移動,文本框就怎麼移動,鍵盤移動多少,文本框就移動多少,文本框時時刻刻跟着鍵盤走

    // 用鍵盤的y - 控制器view的高 就得到控制器view要移動的位置

    // 彈出後鍵盤的Y = 451 - 667 = -216

    // 隱藏後鍵盤的y = 667 - 667 = 0;

    CGFloat translationY = keyboardFrame.origin.y -self.view.bounds.size.height;

    // 移動控制器view

    //有了鍵盤的縱座標 就可以動態控制

    self.view.transform = CGAffineTransformMakeTranslation(0, translationY);

 }


4.一旦拖動屏幕就收起鍵盤

/** 將要開始拖拽屏幕時來調用此方法 */

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {

    [self.view endEditing:YES];// 退出鍵盤

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章