【发布时间】:2012-11-26 15:23:27
【问题描述】:
我找不到我的问题的解决方案,因为stackOverflow 的所有其他帖子都引用了使用 IDE 而不是以编程方式创建的 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;
}
但我意识到我的 textField 没有“看到”上述功能。尝试使用
[textField addTarget:self action:@selector(...
但没有运气。 有什么帮助吗?
【问题讨论】:
-
你到底为什么要删掉最重要的一段代码? [tff addTarget:self action:@selector(changed:) forControlEvents:UIControlEventEditingChanged];是你需要的东西。
-
试试 textField.delegate = self;并且视图控制器实现了 shouldChangeCharactersInRange;
-
Jimpic 没用。但我找到了解决方案,谢谢。
标签: ios xcode uitextfield