设置自定义的UITextField最大长度

我找不到我的问题的解决scheme,因为stackOverflow中的所有其他职位是指用IDE创build的UITextField,而不是编程。

我有一个自定义的UITextField创build里面(void)viewDidLoad 。我有这个程序创build,所以我可以访问leftView属性。

  UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 66, screenAdj, 30)]; textField.borderStyle = UITextBorderStyleRoundedRect; textField.font=[UIFont fontWithName:@"Helvetica" size:14]; textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; textField.returnKeyType = UIReturnKeyDone; textField.clearButtonMode = UITextFieldViewModeWhileEditing; [textField addTarget:self action:@selector(textFieldShouldReturn:)forControlEvents:UIControlEventEditingDidEndOnExit]; textField.text=[defaults stringForKey:@"username"]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 40)]; label.font=[UIFont fontWithName:@"Helvetica" size:14]; label.text = @"Your name"; label.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0]; textField.leftViewMode = UITextFieldViewModeAlways; textField.leftView = label; 

我也想限制TextField中的最大字符实现:

 - (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSUInteger oldLength = [textField.text length]; NSUInteger replacementLength = [string length]; NSUInteger rangeLength = range.length; NSUInteger newLength = oldLength - rangeLength + replacementLength; BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound; return newLength <= MAX_LENGTH_USERNAME || returnKey; } 

但我意识到我的textField不“看”上面的function

 [textField addTarget:self action:@selector(... 

但没有运气。 任何帮助?

你必须告诉你的视图控制器符合UITextFields委托协议。 在你的(.h)在“UIViewController”之后加上<UITextFieldDelegate> ,当你设置你的文本字段时,把它的委托设置为self

 [textField setDelegate:self]; 

然后你可以继续删除这一行

 [textField addTarget:self action:@selector(... 

假设你正在使用这个来调用shouldChangeCharactersInRange 。 现在你已经build立了委托,这个方法将被自动调用。