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

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

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

  

用了一个比较优雅的写法

 -(BOOL)textFieldShouldReturn:(UITextField *)textField{//传入的是当前使用的textField
[self switchtextField:textField];
return YES;
} //在弹出键盘之前检查输入状态,只有一个有输入那么按键就是Next,2个完成输入就Done
- (void)textFieldDidBeginEditing:(UITextField *)textField{
if ([textField isEqual:self.textFieldTitle]) {
textField.returnKeyType = [self.textFieldSubTitle.text length] ? UIReturnKeyDone :UIReturnKeyNext;
}else if([textField isEqual:self.textFieldSubTitle]){
textField.returnKeyType = textField.returnKeyType = [self.textFieldTitle.text length] ? UIReturnKeyDone :UIReturnKeyNext;
}
} -(void)switchtextField :(UITextField*) textField {
NSUInteger titLenth = [self.textFieldTitle.text length];
NSUInteger subLenth = [self.textFieldSubTitle.text length]; if ([self.textFieldTitle isFirstResponder]) {
[self.textFieldSubTitle becomeFirstResponder];
}else if([self.textFieldSubTitle isFirstResponder]){
[self.textFieldTitle becomeFirstResponder];
} if (titLenth && subLenth) {
[textField resignFirstResponder];
BOOL CanSegue = [self shouldPerform:kUNWIND_ID];
if (CanSegue)
[self performSegueWithIdentifier:kUNWIND_ID sender:nil]; }
} -(BOOL) shouldPerform:(NSString *)identifier {
if ([identifier isEqualToString:kUNWIND_ID]) {
if (!self.image) {
[self alert:@"No Photo taken!"];
return NO;
}else if(![self.textFieldTitle.text length] || ![self.textFieldSubTitle.text length]){
[self.textFieldTitle.text length] ? [self alert:@"SubTitle required!"] :
[self.textFieldSubTitle.text length] ? [self alert:@"Title required!"] :
[self alert:@"Title and SubTitle required"] ;
return NO;
}else{
return YES;
}
}else{
return NO;
} }

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

  1. Qt之Tab键切换焦点顺序

    简介 Qt的窗口部件按用户的习惯来处理键盘焦点.也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件. 焦点获取方式比较多,例如:鼠标点击.Tab键切换.快捷键.鼠标滚轮等. 习 ...

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

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41556615 在duilib中,按tab键会让焦点在Button一类的控 ...

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

    这是一款基于jQuery的图片切换焦点图插件,这款jQuery焦点图插件的特点是图片可以分组切换,也就是说一次可以切换多张图片,相比其他焦点图插件,它能节省更多的空间,可以向用户展示更多的图片,非常实 ...

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

    今天爱编程给网友们分享一款基于jQuery+html5实现的3D动态切换焦点轮播幻灯片,支持左右箭头和圆点按钮播放控制,支持多种不同的3D动态切换特效,自适应全屏显示,兼容360.FireFox.Ch ...

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

    系统默认情况下,使用Tab按键切换页面元素的焦点,有没有想过回车键Enter也可以实现这种功能,并且具有良好的用户体验. 接下来我们使用Jquery实现回车键Enter切换焦点,此代码在常用浏览器IE ...

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

    当用户在表单中填写完当前字段后,能否自动将焦点跳转到下一个字段以方便用户输入? 为了增强易用性,加快数据输入的速度,可以在前一个文本框中的字符达到一定的设置的字符长度后(比如电话号码,身份证号等),用 ...

  7. js进阶 9-9 html控件如何实现回车键切换焦点

    js进阶 9-9 html控件如何实现回车键切换焦点 一.总结 一句话总结:在onkeydown事件中判断event对象的键位码,然后focus事件. 二.js进阶 9-9 html控件如何实现回车键 ...

  8. View手动切换焦点注意事项

    这几天一直在解决一个焦点切换的问题,由于是直接用另外一家公司的代码,没有细看.当应用到测试那边,发现了这个问题,而且真机调试有些问题,不能单步调试,后来是看日志才发现这个问题. ViewA包含几个可以 ...

  9. 一款基于jQuery多图切换焦点图插件

    这次要给大家分享的也是一款jQuery图片滑块插件,之前有介绍过不少实用的jQuery焦点图插件和jQuery图片滑块插件,比如jQuery左侧Tab切换的图片滑块插件.它的特点是可以同时切换多张图片 ...

随机推荐

  1. 【转】Rails中Bootstrap的安装和使用

     转自:http://blog.csdn.net/lissdy/article/details/9195651   眼看着前端攻城师们都开始使用Bootstrap创作网页,于是也想学着在最近正在学习的 ...

  2. java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory报错springmvc

    转自:https://blog.csdn.net/qq_41879385/article/details/82892555 下面是错误信息:java.lang.ClassNotFoundExcepti ...

  3. 【Android异常】The specified child already has a parent. You must call removeView() on the child's parent first.

    错误信息: Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must ...

  4. Guava Cache本地缓存

    Guava介绍 Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库. 这个库是为了方便编码,并减少编码错误. 这个库提供用于集合,缓存,支持原语,并发性,常见注解,字 ...

  5. ROS Learning-013 beginner_Tutorials (编程) 编写ROS服务版的Hello World程序(Python版)

    ROS Indigo beginner_Tutorials-12 编写ROS服务版的Hello World程序(Python版) 我使用的虚拟机软件:VMware Workstation 11 使用的 ...

  6. CF570E Pig and Palindromes

    完全不会这种类型的$dp$啊…… 考虑回文串一定是可以拆分成(偶数个字母 + 偶数个字母)或者(偶数个字母 + 一个字母 +偶数个字母),两边的偶数个字母其实是完全对称的.因为这道题回文串的长度是给定 ...

  7. WOJ 10 精英选拔

    神仙dp,膜Claris 题意:给一个长度为$n$的数列,求出不超过k次交换后的最大连续子区间和. 发现交换后的最优答案一定是这样的(0和2的长度可以为0)             0        ...

  8. python3-函数的参数的四种简单用法:

    def print_two(*args):     arg1, arg2 = args     print "arg1: %r, arg2: %r" % (arg1,arg2)   ...

  9. python3-字典的循环

    # Auther: Aaron Fan info = { 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex ...

  10. Linux 终端命令行提示符的艺术--PS1进阶

    话不多说,先瞅瞅我的命令行提示符(有点大): 图中命令行解释:┌[阳历日期/农历日期 时间]├[当前目录下目录数+当前目录下文件数][当前绝对目录]└[用户名@主机名-第几个终端 ╰_╯] 相关配置文 ...