zoukankan      html  css  js  c++  java
  • 关于在多个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 }
  • 相关阅读:
    [文摘20090106]大量实战经验的真实网络创业经历分享(转)
    [转]MySQL 行号
    [转]C# Socket编程笔记
    [转]DirectShow:图片的抓取
    [书目20081213]抢在时间前面的7条捷径
    [文摘20090106]微软EPG老大让秘书发给大家的邮件
    [转]页面外仿 MSN 弹出提示信息的脚本改进版(仅能在IE下运行!)
    自此而后 加班 可以 不过 我只适度加班
    通过定时reload回发某页面请求 避免因用户一直不操作而引起的Session过期
    [转]ASP.NET2.0轻松搞定统计图表【月儿原创】
  • 原文地址:https://www.cnblogs.com/zuopeng/p/4076972.html
Copyright © 2011-2022 走看看