首先附上我項目中用曾經用到的幾張圖 並說明一下個人用法:ios
圖1:iview
圖2:ui
圖3:spa
心在你我說一下 我當初的實現 方法 ,但願能給大家一些 啓示設計
圖1: 我採用的是最簡單的方法 由於cell的個數比較少 而且不會出現鍵盤把cell擋住的狀況 因此我直接就是用的 view 上邊加 label +textfield 雖然代碼很繁瑣 可是 仍是實現了基本的效果code
圖2:因爲這個cellde 個數比較多 再使用 view+label+textfield的方法 就不現實了, 因此我 就找各類辦法,終於 找到 cell能夠跟隨鍵盤移動了,也就是說 鍵盤不會擋住輸入框,我採用的是tableviewcontroller ,只有使用 TableviewController就很容易的實現了我想要的效果。 可是 後來在開發中遇到一個問題 : 由於使用的是UItableviewContrller 當時咱們的設計就說 可不能夠將下邊的按鈕審覈中 讓他的位置固定 ,不隨tableview的滾動而滾動,可是我也是嘗試了各類的辦法,可是仍是沒有辦法實現,因此最後ui妥協了 就讓他隨位置移動吧 ,由於tableviewcontroller 雖然幫助咱們實現了不少的功能,可是 在界面是就比較侷限了,遠遠比不上 uiviewcontroller+tableview 靈活。blog
圖3: 最近又要作 相似於 圖2 的 圖,我終於 仍是 不能容忍本身 使用uitableviewcontroller了 因此我仍是 試了不少 就是 如圖三實現的效果: 當鍵盤出來的時候 不會擋住uitextfield 不影響用戶的體驗,那麼我是如何實現的呢?開發
思路:it
uiviewcontroller+uitableviewio
讓tableview 的當前編輯的cell 始終處於 tableview 的中間位置,這樣的話就不會被擋住了。固然了 tableview 裏邊就有相應的方法:
[_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
是的 使用這個方法就能夠了。
發上代碼:
#pragma mark - 改變tableview的位置(當將要編輯的時候) -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ NSIndexPath *indexPath = [NSIndexPath indexPathForRow:textField.tag inSection:0]; //將要編輯的textfield 所在的cell 使其滾動到中間的位置 [_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; return YES; }
沒錯使用這個就能夠實現了。是否是感受很神奇ne