本人对于应用的完美用户体验是这样认为:当一个应用是迎合用户习惯 ,并且在人机交互之中降低用户的学习成本 ,由于应用和人的思维方向一致时,就会有共鸣,这对于程序设计是有益的,因为只要愿意去改变总有优雅的方式出现。对于程序体验也是一样,回想使用软件的时候,输入账号和密码,输入账号点击一次账号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. 数据库:sql 多表联合更新【转】

    SQL Update多表联合更新的方法 (1) sqlite 多表更新方法 update t1 set col1=t2.col1 from table1 t1 inner join table2 t2 ...

  2. ruby中nil?, empty? and blank?

    In Ruby, you check with nil? if an object is nil: article = nil article.nil? # => true empty? che ...

  3. node install error

    错误:Unexpected end of JSON input while parsing near.... 解决办法: npm cache clean --force

  4. C#连接MSSQL

    本文将介绍如何用C#连接MSSQL,C#连接SQL十分简单.我们一步一步来操作. 1.打开Microsoft SQL Server Management Studio创建一个数据库,这里我创建一个数据 ...

  5. Velocity加载模版文件

    一.类路径 加载classpath目录下的vm文件,或者maven项目的resources路径下 Properties p = new Properties(); p.put("file.r ...

  6. 关于uboot的一些优化

    转载于:http://blog.163.com/solylee@126/blog/static/1718231572010101910485331/ 本人的开发环境是u-boot-1.1.6版本,fe ...

  7. 数据库理论-范式(1NF、2NF、3NF)

    范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”. 第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项.(每个属性不可分割)第二范式(2NF)要求数据 ...

  8. 学习CSS的思路(转)

    两周之前写过该系列的第一篇,其实当时只是一个想法,这段时间迟迟未更新,是在思考一个解决过程.现在初有成效,就开更吧. 1. 一个段子 开题不必太严肃,写博客也不像写书,像聊天似的写东西是最好的表达方式 ...

  9. go语言的源码文件的分类及含义

    Go源码文件:名称以.go为后缀,内容以Go语言代码组织的文件 多个Go源码文件是需要用代码包组织起来的 源码文件分为三类:命令源码文件.库源码文件(go语言程序) 测试源码文件(辅助源码文件) 命令 ...

  10. Java C++ Socket通讯

    import java.net.*; import javax.swing.plaf.SliderUI; /** * 与c语言通信(java做client,c/c++做server,传送一个结构) * ...