【发布时间】:2011-05-01 21:18:39
【问题描述】:
我已经为此工作了几天,我的文本字段发生了一些嗡嗡声......现在到了我需要退后一步的地步,希望有人拥有一双新的眼睛可以了解情况。
基本上我正在做的是将一个 20 个字符的字符串格式化为 5 个组,因为用户在每 5 个字符后键入一个连字符会弹出一个字符串,这很有效。
我有一个提交按钮,在输入第 20 个字符之前无法使用,这也有效,但它变得疯狂!如果你删除一个字符,提交按钮仍然有效..然后你又删除一个字符,它不起作用......我很茫然,因为我的 if 语句条件不像我应该指定的那样工作== 23 个字符,您必须按其中一个键 24 次才能进入该语句。这没有逻辑意义。
无论如何,如果您能帮助我解决第一个问题,那就太好了,那么如果您对第二个问题有任何想法,那就太好了。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *separator = @"-";
int seperatorInterval = 5; //how many chars between each hyphen
NSString *originalString = [regTextField.text stringByReplacingOccurrencesOfString:separator withString:@""];
if (textField.text.length == 23 && range.length == 0){
return NO; // return NO to not change text
}
if (![originalString isEqualToString:@""] && ![string isEqualToString:@""]) {
NSString *lastChar = [regTextField.text substringFromIndex:[regTextField.text length] - 1];
int modulus = [originalString length] % seperatorInterval;
if (![lastChar isEqualToString:separator] && modulus == 0) {
regTextField.text = [regTextField.text stringByAppendingString:separator];
}
}
[self validateTextFields];
return YES; //Keep accepting input from the user
}
//Validating text field to see if Submit button can be pressed or not
-(IBAction) validateTextFields {
NSString *intString = [NSString stringWithFormat:@"%d", regTextField.text.length];
NSLog(@"Starting %@", intString);
if (regTextField.text.length < 22){
[submitButton setEnabled:NO]; //enables submitButton
}
else {
regTextField.text = [regTextField.text substringToIndex:22];
[submitButton setEnabled:YES]; //disables submitButton
}
intString = [NSString stringWithFormat:@"%d", regTextField.text.length];
NSLog(@"Done %@", intString);
}
【问题讨论】:
标签: iphone if-statement nsstring uitextfield