关于在多个UItextield切换焦点

本人对于应用的完美用户体验是这样认为:当一个应用是迎合用户习惯 ,并且在人机交互之中降低用户的学习成本 ,由于应用和人的思维方向一致时,就会有共鸣,这对于程序设计是有益的,因为只要愿意去改变总有优雅的方式出现。对于程序体验也是一样,回想使用软件的时候,输入账号和密码,输入账号点击一次账号UItextield,输完之后再点击密码UItextield;

现在想起里这样太反人类了,程序不是应该贴近人的思维方式呢?输入完账号,利用键盘的return切换到下一个密码UItextield,当账号和密码完成之后再安return完成保存,这样的用户体验才连贯,用户无意之间点击了return发现回自动切话,智能的东西总是会惹人爱,先贴一个用户界面,下面再附上代码;

自动修改 return显示的内容( Next , Done )

  

用了一个比较优雅的写法

 1 -(BOOL)textFieldShouldReturn:(UITextField *)textField{//传入的是当前使用的textField
 2     [self switchtextField:textField];
 3     return YES;
 4 }
 5
 6 //在弹出键盘之前检查输入状态,只有一个有输入那么按键就是Next,2个完成输入就Done
 7 - (void)textFieldDidBeginEditing:(UITextField *)textField{
 8     if ([textField isEqual:self.textFieldTitle]) {
 9         textField.returnKeyType = [self.textFieldSubTitle.text length] ? UIReturnKeyDone :UIReturnKeyNext;
10     }else if([textField isEqual:self.textFieldSubTitle]){
11         textField.returnKeyType = textField.returnKeyType = [self.textFieldTitle.text length] ? UIReturnKeyDone :UIReturnKeyNext;
12     }
13 }
14
15 -(void)switchtextField :(UITextField*) textField {
16     NSUInteger titLenth = [self.textFieldTitle.text length];
17     NSUInteger  subLenth = [self.textFieldSubTitle.text length];
18
19     if ([self.textFieldTitle isFirstResponder]) {
20         [self.textFieldSubTitle becomeFirstResponder];
21     }else if([self.textFieldSubTitle isFirstResponder]){
22         [self.textFieldTitle becomeFirstResponder];
23     }
24
25     if (titLenth && subLenth) {
26         [textField resignFirstResponder];
27         BOOL CanSegue = [self shouldPerform:kUNWIND_ID];
28         if (CanSegue)
29             [self performSegueWithIdentifier:kUNWIND_ID sender:nil];
30
31     }
32 }
33
34 -(BOOL) shouldPerform:(NSString *)identifier  {
35     if ([identifier isEqualToString:kUNWIND_ID]) {
36         if (!self.image) {
37             [self alert:@"No Photo taken!"];
38             return NO;
39         }else if(![self.textFieldTitle.text length] || ![self.textFieldSubTitle.text length]){
40             [self.textFieldTitle.text length] ? [self alert:@"SubTitle required!"]   :
41             [self.textFieldSubTitle.text length] ?  [self alert:@"Title required!"]  :
42             [self alert:@"Title and SubTitle required"] ;
43             return NO;
44         }else{
45             return YES;
46         }
47     }else{
48         return NO;
49     }
50
51 }
时间: 2024-08-01 03:42:55

关于在多个UItextield切换焦点的相关文章

点击enter回车键实现表单元素切换焦点效果

点击enter回车键实现表单元素切换焦点效果:现在网站都比较追求人性化,比如填写表单的时候,能够实现点击回车就可以切换表单元素的焦点,这样比使用鼠标进行切换更能让人接受,下面就通过代码实例介绍一下如何实现此功能.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://w

Qt之Tab键实现(自由切换焦点)

在Qt中,有一些特殊的按键比如说Tab键,默认Tab事件(切换焦点)被先捕获了,所以如果想自定义Tab键的使用应该如何实现呢? 在实际需求中我主要是实现QLineEdit.QCheckBox.QPushButton.QToolButton之间的切换,可以根据自己的程序修改切换顺序.当然如果自己不去实现Tab键的功能,就像前面所言,Qt也会去捕获Tab键切换焦点,只不过顺序是死的!那么要想灵活的切换应该怎么实现呢? 1.安装事件过滤器 realm_line_edit->installEventFi

jQuery+html5实现的3D动态切换焦点轮播幻灯片

今天爱编程给网友们分享一款基于jQuery+html5实现的3D动态切换焦点轮播幻灯片,支持左右箭头和圆点按钮播放控制,支持多种不同的3D动态切换特效,自适应全屏显示,兼容360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗,不支持IE8及以下浏览器.横向全屏显示,效果图如下: 在线预览   源码下载 实现的代码. 该幻灯片基于jquery,所以要引用jquery库,另个还有两个js库分别是html5zoo.js和lovelygallery.js.这些js在实例下

一款基于jQuery的图片分组切换焦点图插件

这是一款基于jQuery的图片切换焦点图插件,这款jQuery焦点图插件的特点是图片可以分组切换,也就是说一次可以切换多张图片,相比其他焦点图插件,它能节省更多的空间,可以向用户展示更多的图片,非常实用. 在线预览   源码下载 实现的代码. html代码: <div class="device"> <h2> <a href="javascript:;" class="pre">上一组</a><

基于Jquery的实现回车键Enter切换焦点

接下来我们使用Jquery实现回车键Enter切换焦点,此代码在常用浏览器IE7, IE8, Firefox 3, Chrome 2 和 Safari 4测试通过.使用的开发工具是微软VS2010+Jquery框架. 实现步骤如下 1. 首先引用Jquery类库 <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 2. Javascript代码 

axure切换焦点文本框样式

在之前的文章中,我们介绍过在axure中自定义文本框样式的方法,今天我们再深入一些,当文本框的焦点发生变化时,动态切换焦点文本框的样式. 先看效果: 制作步骤: 先把文本框的默认样式做出来: 拖入两个文本框,分别命名为用户名.密码,隐藏边框,设置好提示文字:. 拖入两个矩形,设置高度略大于文本框,边框颜色为浅灰色,分别命名为用户名边框.密码边框,分别把两个文本框置于对应的边框上方. 开始做交互,当文本框获取焦点时,改变边框颜色: 当文本框获取焦点时,把对应的边框矩形设置为选中状态,失去焦点时,取

javascript实现自动切换焦点功能学习

当用户在表单中填写完当前字段后,能否自动将焦点跳转到下一个字段以方便用户输入? 为了增强易用性,加快数据输入的速度,可以在前一个文本框中的字符达到一定的设置的字符长度后(比如电话号码,身份证号等),用户输入完后,自动将焦点切换到下一个文本框中.可以使用JS来实现这一功能. 思路:首先,比较用户输入的值和文本框中的maxlength特性,确定是否达到了指定的长度(或者允许输入的最大长度),如果这两个值相等,就去查找表单字段的集合,找到下一个文本框,将焦点切换到该文本框中. 代码: 1 <!DOCT

jquery点击缩略图切换视频播放的视频切换焦点图效果

一款由jquery实现的视频切换特效,可以像图片切换那样切换所选择的视频来播放,图片切换相对来说较简单,但视频切换的话就需要播放插件的支持,选择视频缩略图后,上边原来显示大图片的地方是显示一个播放器,每个缩图对应一个视频片段,视频电影站推荐使用. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transition

修复duilib CEditUI控件和CWebBrowserUI控件中按Tab键无法切换焦点的bug

转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41556615 在duilib中,按tab键会让焦点在Button一类的控件中切换,但是切换焦点一直存在bug,具体的描述如下: 1.在主窗体里弹出新的窗体,当新窗体中存在CEditUI控件并且焦点在此CEditUI控件上,那么按tab键将无法切换焦点而一直处于CEditUI中.(只在新窗体中有此bug,主创体中没有,原因会在后面分析) 2.CWebBrowserUI控件