0
我一直在爲此工作數日,現在我的文本字段出現了一些嗡嗡的事情...而且它已經到了需要退後一步的地步,希望有一雙新鮮眼睛的人可以揭示這種情況。UITextField在格式化NSString時出現NSString長度問題
基本上我正在做的是將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);
}