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