問題 處理表單的時候,一定會碰到的就是輸入控制項被鍵盤遮住的問題,如圖: 實例 左邊是普通表單,中間是2B表單,右邊是文藝表單. 分析 處理這種問題無非就是2個步驟: 鍵盤彈出時,縮小UITableView的frame 滾動UITableView,讓當前輸入的控制項可見 代碼寫出來就是這幾步 捕獲鍵盤事
問題
處理表單的時候,一定會碰到的就是輸入控制項被鍵盤遮住的問題,如圖:
左邊是普通表單,中間是2B表單,右邊是文藝表單.
分析
處理這種問題無非就是2個步驟:
- 鍵盤彈出時,縮小
UITableView
的frame
- 滾動
UITableView
,讓當前輸入的控制項可見
代碼寫出來就是這幾步
- 捕獲鍵盤事件
- 計算鍵盤高度並調整
UITableView
的frame
- 獲取當前正在輸入的控制項
- 計算其在
UITableView
中的位置,並滾動到其位置讓其可見
那麼如何一步一步的來實現這些步驟呢?
捕獲鍵盤事件
捕獲鍵盤事件
1
|
[[NSNotificationCenter defaultCenter] addObserver:self
|
計算鍵盤高度並調整UITableView
的frame
計算鍵盤高度並調整UITableView的frame
1
|
- (void)actionKeyboardShow:(NSNotification *)notification
|
獲取當前正在輸入的控制項
這裡得說一句,普通程式員一般是這樣來獲取的
UIView的Category
1
|
- (UIView *) getFirstResponder
|
雖然沒錯,但是文藝程式員應該這樣來獲取
UIResponder的Category
1
|
static __weak id currentFirstResponder;
|
同理,有時候我們需要讓鍵盤消失,那麼也有三種做法可以選擇
1
|
[someView resignFirstResponder];
|
如何選擇呢? It’s up to U.
計算其在UITableView
中的位置,並滾動到其位置讓其可見
計算其在UITableView中的位置,並滾動到其位置讓其可見
1
|
- (void)actionKeyboardShow:(NSNotification *)notification
|