您的位置:首页 > 产品设计 > UI/UE

iOS 键盘处理(改变键盘为完成键),UITextField键盘显示隐藏,弹出,回弹

2017-05-20 23:02 1131 查看
很多时候用到UITextField时,处理键盘是一个很棘手的问题。

问题一:如何隐藏键盘?

方案1.改变键盘右下角的换行(enter)键为完成键,后实现代理方法键盘自动回弹



keyBoardControll.gif

UITextField*textField=[[UITextFieldalloc]initWithFrame:CGRectMake(100,300,200,40)];
[self.viewaddSubview:textField];

textField.delegate=self;
textField.returnKeyType=UIReturnKeyDone;//改变为完成键,如果在项目中导入了YYText框架那么原生的就被替换掉了,变为returnKeyType=UIKeyboardTypeTwitter;

//实现UITextField代理方法
-(BOOL)textFieldShouldReturn:(UITextField*)textField{

[textFieldresignFirstResponder];//取消第一响应者

returnYES;
}
/*textField.returnKeyType可以改变为很多样式
typedefNS_ENUM(NSInteger,UIReturnKeyType){
UIReturnKeyDefault,
UIReturnKeyGo,
UIReturnKeyGoogle,
UIReturnKeyJoin,
UIReturnKeyNext,
UIReturnKeyRoute,
UIReturnKeySearch,
UIReturnKeySend,
UIReturnKeyYahoo,
UIReturnKeyDone,
UIReturnKeyEmergencyCall,
UIReturnKeyContinueNS_ENUM_AVAILABLE_IOS(9_0),
};
*/

当然搜狗输入法是自带隐藏键盘的功能的,但是你不能保证每个用户都装有搜狗输入法,这种方案也会改变搜狗键盘的右下角按钮为完成键

方案2.点击textField以外区域键盘回弹

-(void)touchesBegan:(NSSet<UITouch*>*)toucheswithEvent:(UIEvent*)event{
[self.viewendEditing:YES];
}

如果textField在tableView上还可以实现下面的tableView的代理方法

-(void)tableView:(UITableView*)tableViewdidSelectRowAtIndexPath:(NSIndexPath*)indexPath{
[self.viewendEditing:YES];
}

问题二:键盘键盘遮挡输入框的的问题

解决方案

#pragmamark-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;
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: