IOS之UITextField与键盘
来源:互联网 发布:mac下windows系统截图 编辑:程序博客网 时间:2024/05/16 01:34
场景
登录界面,需要输入11位手机号码和密码。
解决
为更好的体验,当用户输入了11位手机号的时候,自动跳到下一个输入框。
UITextField有代理方法,但是没有在输入框内容改变之后的回调方法。
这时候,我们会用
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
方法来实现输入11位手机号的时候,跳到下一个输入框。
假设如下这样
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if (textField == _phoneTextField) { NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容 NSLog(@"content %@",toBeString); if (toBeString.length == 11) { [_phoneTextField resignFirstResponder]; [_passwordField becomeFirstResponder]; } } return YES;}
会发现,手机号输入了10位,输入第11位的时候,键盘焦点立即跑到下一个输入框,致使手机号框10位,密码框1位。
这时候,有的方案是加个延迟,将变化焦点的代码延迟执行.
代理方法中没有输入框变化后的方法,但是却提供了通知UITextFieldTextDidChangeNotification,注册这个通知,可获得输入框变化后的情况。
- (void)addTextFieldObserver{ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onTextFieldTextDidChange:) name:UITextFieldTextDidChangeNotification object:_phoneTextField];}- (void)onTextFieldTextDidChange:(NSNotification *) notification{ id object = notification.object; if (object == _phoneTextField) { if (_phoneTextField.text.length == 11) { [_phoneTextField resignFirstResponder]; [_passwordField becomeFirstResponder]; } }}
使用这个方法,就不必去为焦点变化加延迟了,输入11个后就跳到下面去了。
另外
一般,还需要点击空白背景,使得键盘隐藏。
有的是将UIView改为UIControl,使得它能够响应事件。
觉得还是为View增加手势比较合适,加个UITapGestureRecognizer。
//增加隐藏键盘的手势- (void)addHiddenKeyBoardTagGesture{ UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hiddenKeyBoard)]; [self.view addGestureRecognizer:tapGesture];}- (void)hiddenKeyBoard{ [self.view endEditing:YES];}
0 0
- IOS之UITextField与键盘
- UITextField与键盘——IOS
- iOS图文攻略之UITextfield 键盘回收
- IOS 之 UITextField与UITextView
- iOS 键盘挡住UITextField
- UITextField 与 键盘
- [转载]UITextField 与 键盘
- UITextField 与 键盘
- UITextField 与键盘相关
- UITextField 与 键盘
- iOS - 监听UITextField键盘删除键之分类
- iOS之UITextField怎么自定义键盘的return键
- iOS - 监听UITextField键盘删除键之分类
- iOS之UITextField怎么自定义键盘的return键
- iOS中UITextField隐藏键盘
- iOS 使用UITextField隐藏键盘
- ios键盘遮挡UITextField问题
- iOS 使用UITextField隐藏键盘
- 黑马程序员——C语言关键字、标识符、注释、数据类型、常量
- eclipse常用快捷键
- Android基础教程之Button事件触发AlertDialog简单小窗口的应用
- 泛型
- 黑马程序员----Java网络编程
- IOS之UITextField与键盘
- c++字符串的包含问题
- SDNU 1089.拓扑排序【找入度为0的节点 拓扑排序】
- memcached与Redis比较
- 【华为oj】字符串分割
- AutoComplectView英语词典
- nautilus-open-terminal
- 排序算法——堆排序
- IDA PRO 静态反汇编与OllyDbg动态调试实战技巧汇总