iOS 鍵盤處理(改變鍵盤為完成鍵),UITextField鍵盤顯示隱藏,彈出,回彈
阿新 • • 發佈:2017-05-21
框架 設置代理 res bool sea boa rst frame 技術分享
keyBoardControll.gif
很多時候用到UITextField時,處理鍵盤是一個很棘手的問題。
問題一:如何隱藏鍵盤?
方案1.改變鍵盤右下角的換行(enter)鍵為完成鍵,後實現代理方法鍵盤自動回彈
keyBoardControll.gif
UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 40)];
[self.view addSubview:textField];
textField.delegate = self;
textField.returnKeyType = UIReturnKeyDone;//改變為完成鍵,如果在項目中導入了YYText框架那麽原生的就被替換掉了,變為returnKeyType = UIKeyboardTypeTwitter;
//實現UITextField代理方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];//取消第一響應者
return YES;
}
/*textField.returnKeyType可以改變為很多樣式
typedef NS_ENUM(NSInteger, UIReturnKeyType) {
UIReturnKeyDefault,
UIReturnKeyGo,
UIReturnKeyGoogle,
UIReturnKeyJoin,
UIReturnKeyNext,
UIReturnKeyRoute,
UIReturnKeySearch,
UIReturnKeySend,
UIReturnKeyYahoo,
UIReturnKeyDone,
UIReturnKeyEmergencyCall,
UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),
};
*/
當然搜狗輸入法是自帶隱藏鍵盤的功能的,但是你不能保證每個用戶都裝有搜狗輸入法,這種方案也會改變搜狗鍵盤的右下角按鈕為完成鍵
方案2.點擊textField以外區域鍵盤回彈
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
如果textField在tableView上還可以實現下面的tableView的代理方法
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[self.view endEditing:YES];
}
問題二:鍵盤鍵盤遮擋輸入框的的問題
解決方案
#pragma mark - textFieldDelegate(別忘了遵守協議設置代理)
- (void)textFieldDidBeginEditing:(UITextField *)textField {
self.view.y = self.view.y - 216; //216是輸入框在最底部時view移動的距離,具體移動多少距離,需要根據實際情況而定
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
self.view.y = self.view.y + 216;
}
iOS 鍵盤處理(改變鍵盤為完成鍵),UITextField鍵盤顯示隱藏,彈出,回彈