debug - UITextField 输入完跳入下一field,按钮变化
2015-06-23 13:27
423 查看
textField
.h 里创建对象@interface ***Controller : UIViewController
{
UITextField *phoneNumber;
UITextField *verification;
}
.m 里编写逻辑及其相关的方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; } cell.selectionStyle = UITableViewCellSelectionStyleNone; if (indexPath.row == 0) { phoneNumber = [[UITextField alloc] initWithFrame:CGRectMake(20, 0, 200, 44)]; phoneNumber.placeholder = @"手机号"; phoneNumber.font = [UIFont systemFontOfSize:14.0f]; phoneNumber.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; phoneNumber.keyboardType = UIKeyboardTypePhonePad; // phoneNumber.returnKeyType = UIReturnKeyDone; phoneNumber.delegate = self; [cell.contentView addSubview:phoneNumber]; } if (indexPath.row == 1) { verification = [[UITextField alloc] initWithFrame:CGRectMake(20, 0, 200, 44)]; verification.placeholder = @"验证码"; verification.font = [UIFont systemFontOfSize:14.0f]; verification.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; [cell.contentView addSubview:verification]; sendBtn = [UIButton buttonWithType:UIButtonTypeCustom]; // sendBtn.enabled = YES; [sendBtn setFrame:CGRectMake(CGRectGetWidth(tableView.frame) - 90, 10, 80, 22)]; [sendBtn setTitle:@"发送验证码" forState:UIControlStateNormal]; [sendBtn.titleLabel setFont:[UIFont systemFontOfSize:13.0]]; [sendBtn setBackgroundColor:COLOR(238, 238, 238, 1)]; [sendBtn.layer setCornerRadius:10.0f]; [sendBtn addTarget:self action:@selector(sendButtonClick:) forControlEvents:UIControlEventTouchUpInside]; [cell.contentView addSubview:sendBtn]; } return cell; } phoneNumber.returnKeyType = UIReturnKeyDone; phoneNumber.delegate = self; [cell.contentView addSubview:phoneNumber]; } if (indexPath.row == 1) { verification = [[UITextField alloc] initWithFrame:CGRectMake(20, 0, 200, 44)]; verification.placeholder = @"验证码"; verification.font = [UIFont systemFontOfSize:14.0f]; verification.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; [cell.contentView addSubview:verification]; sendBtn = [UIButton buttonWithType:UIButtonTypeCustom]; // sendBtn.enabled = YES; [sendBtn setFrame:CGRectMake(CGRectGetWidth(tableView.frame) - 90, 10, 80, 22)]; [sendBtn setTitle:@"发送验证码" forState:UIControlStateNormal]; [sendBtn.titleLabel setFont:[UIFont systemFontOfSize:13.0]]; [sendBtn setBackgroundColor:COLOR(238, 238, 238, 1)]; [sendBtn.layer setCornerRadius:10.0f]; [sendBtn addTarget:self action:@selector(sendButtonClick:) forControlEvents:UIControlEventTouchUpInside]; [cell.contentView addSubview:sendBtn]; } return cell; } // 此方法的唯一缺陷是,判断的延迟,当输入完成后,才判断字符串长度 - (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { // 当输入的数字长度为11时,自动跳入验证码输入框 if (phoneNumber.text.length == 11) { // 验证码框成为第一响应者,即当输入窗口完成时,自动跳到验证码窗口,“发送验证码”按钮亮起 [verification becomeFirstResponder]; // 发送按钮可点击,NO:不可点击 sendBtn.enabled = YES; [sendBtn setBackgroundColor:[UIColor grayColor]]; return NO; } else { [sendBtn setBackgroundColor:COLOR(238, 238, 238, 1)]; } return YES; } // 在当前框内开始编辑时,触发此方法 - (void)textFieldDidBeginEditing:(UITextField *)textField { sendBtn.enabled = YES; [sendBtn setBackgroundColor:COLOR(238, 238, 238, 1)]; }
另外,有关UITextField的方法还有- (BOOL)textFieldShouldReturn:(UITextField *)textField
// 该方法 键盘弹出的时候 点return键盘隐藏 - (BOOL)textFieldShouldReturn:(UITextField *)textField { if ([NameStr isEqualToString:textField.text]) { return [NameTF resignFirstResponder]; }else { if (textField.text.length > 0 && textField.text.length <= 15) { NameStr = NameTF.text; [self updateNickName]; }else { [Dialog simpleToast:@"请输入昵称并确保不超过20位"]; } } return [nickNameTF resignFirstResponder]; }
相关文章推荐
- 主页木马的制作方法
- 解密网页加密的两个方法
- 定义标题的最好方法
- Ruby简明教程之方法(Method)介绍
- Ruby基础知识之方法、代码段
- C#获取文件夹及文件的大小与占用空间的方法
- Delphi控件ListView的属性及使用方法详解
- VB6实现连接Access数据库的ADODB代码实现方法
- MySQL重定位数据目录的方法
- PowerShell中Get-Date对象的常用属性和方法介绍
- 在Linux上运行C#的方法
- C#实现绘制面形图表的方法详解
- ruby 流程控制 方法
- CSS清除浮动常用方法小结
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- Oracle中插入特殊字符:&和'的解决方法汇总
- C#获取字符串后几位数的方法
- javascript下拉框不被选中大类的区别方法
- MySQL数据库安全之防止撰改的方法
- VC实现批量删除指定文件的方法