我在輸入textField時設置電話號碼格式,如(222)233-3441。當用戶繼續輸入多於14個字符(包括特殊字符)時,所有特殊字符將被移除並且僅顯示數字(即222233344188)。而當他們回到14個字符刪除一些字符時,電話號碼格式將被重新設置。我達到了我想要的。但刪除時面臨問題。在輸入時設置電話號碼格式
- 刪除 - 當字符數達到10時應用格式。因此2222333441變成(222)233-3441。
- 保持刪除,從應用格式變爲循環並且字符再次達到10。
成爲空白前進。請將我提出寶貴的建議來解決此問題。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if(string.length!=0){ //detect backspace
if (textField.text.length == 0)
textField.text = [NSString stringWithFormat:@"(%@",textField.text];
if (textField.text.length == 4)
textField.text = [NSString stringWithFormat:@"%@) ",textField.text];
if (textField.text.length == 9)
textField.text = [NSString stringWithFormat:@"%@-",textField.text];
if (textField.text.length>13){
NSString *value=[NSString stringWithString:textField.text];
textField.text=[[value componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]componentsJoinedByString:@""];
}
}
else{
if(textField.text.length==11){
NSMutableString *text=[NSMutableString stringWithString:textField.text];
[text insertString:@"(" atIndex:0];
[text insertString:@") " atIndex:4];
[text insertString:@"-" atIndex:9];
textField.text=text;
}
}
return YES;
}
謝謝。
是您的應用程序將成爲美國和加拿大以外提供?如果是這樣,你需要處理更多的電話格式。 – rmaddy
從用戶體驗角度來看,我建議在用戶輸入完成後設置電話格式(即鍵盤退出時)。另外,如果可能,請在'placeholder'文本中補充此格式。 – Ashok