iOSUITextField限制输入长度

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

这篇博客主要讲限制输入长度的问题,前几天有人问我这个问题,说限制长度会出现无法删除问题,于是正好一块发出来给大家看看。textField的缩进,一张背景图片搞定的事,我这里用了leftView纯属附带。

好了废话少说,贴代码,很简单,大家一看便知。

//先创建一个textField 和 一个button。

#import "ViewController.h"

@interface ViewController ()<UITextFieldDelegate> {

UITextField *currentTextFeild;

UIButton *touchButton;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

UITextField *textFields = [[UITextField alloc] initWithFrame:CGRectMake(15, 50, self.view.bounds.size.width-15*2, 40)];

textFields.backgroundColor = [UIColor brownColor];

textFields.layer.cornerRadius = 5;

textFields.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 40)];

textFields.leftViewMode = UITextFieldViewModeAlways;//这两行是为了不让Text太贴textField的左边

textFields.placeholder = @"请输入手机号";

textFields.delegate = self;

[self.view addSubview:textFields];

currentTextFeild = textFields;

UIButton *enableButton = [UIButton buttonWithType:UIButtonTypeCustom];

enableButton.frame = CGRectMake(15, 100, self.view.bounds.size.width-15*2, 40);

enableButton.layer.cornerRadius = 5;

enableButton.backgroundColor = [UIColor grayColor];

[enableButton setTitle:@"没内容不可点击" forState:UIControlStateNormal];

[enableButton setTitle:@"可以按了" forState:UIControlStateSelected];

[enableButton setTitle:@"按下去了" forState:UIControlStateHighlighted];

enableButton.enabled = NO;

[enableButton addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:enableButton];

touchButton = enableButton;

}

- (void)btnClick {

}

//设置textField代理

#PRagma mark - UITextFieldDelegate

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {

return YES;

}

- (void)textFieldDidEndEditing:(UITextField *)textField {

}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

//用来判断是否可以继续输入, - range.length是为了判断是否可以删除

NSInteger currentLength = textField.text.length - range.length + string.length;

if (currentLength > 11) {

return NO;

}

//判断按钮是否可以enable = YES

if (currentTextFeild.text && currentTextFeild.text.length > 0 && currentLength > 0) {

touchButton.enabled = YES;

touchButton.selected = YES;

}else {

touchButton.enabled = NO;

touchButton.selected = NO;

}

if (currentLength <= 0) {

touchButton.enabled = NO;

touchButton.selected = NO;

}

return YES;

}

- (BOOL)textFieldShouldClear:(UITextField *)textField {

if (currentTextFeild.tag == 11 || currentTextFeild.tag == 12) {

//手机号

touchButton.enabled = NO;

touchButton.selected = NO;;

}

return YES;

}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {

[textField resignFirstResponder];

return YES;

}

大家看了代码,差不多就明白了。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航