我找不到解决方案,因为所有其他帖子stackOverflow都是指用IDE创建的UITextField,而不是编程方式。设置自定义UITextField最大长度
我在(void)viewDidLoad
内部创建了一个自定义UITextField
。我以编程方式创建了此项,因此我可以访问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;
}
但我意识到,我的文本框没有 “发现” 上面function.Tried与
[textField addTarget:self action:@selector(...
但没有运气。 有什么帮助吗?
为什么你最重要的一段代码呢? [tff addTarget:self action:@selector(changed :) forControlEvents:UIControlEventEditingChanged];是你需要的东西。 – jimpic
尝试textField.delegate = self;并且viewcontroller实现了shouldChangeCharactersInRange; – zt9788
Jimpic它没有工作。但我得到了我的解决方案,无论如何。 – Theodoros80