[英]Add whitespace after character in the UITextField
當我從鍵盤輸入每個字符時,我試圖添加空格,但問題是我無法刪除、復制或編輯文本。
- (BOOL) textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string
{
NSUInteger length = [textField.text length] + [string length] - range.length;
if ([textField tag] == textTag && newLength <= 10) {
textField.text = [textField.text stringByAppendingString:@" "];
length ++;
NSLog(@"%d", length);
} else {
NSLog(@"%d", length);
return NO;
}
return YES;
}
您也可以這樣做。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger length = [textField.text length] + [string length] - range.length;
if (length < 10) {
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *lastString = [NSString stringWithFormat:@"%c",[newString characterAtIndex:newString.length-1]];
if(![lastString isEqualToString:@" "] && ![string isEqualToString:@""])
newString = [newString stringByAppendingString:@" "];
else {
NSRange tempR = NSMakeRange(range.location-1, 2);
newString = [textField.text stringByReplacingCharactersInRange:tempR withString:@""];
}
textField.text = newString;
}
return NO;
}
嘗試這個:
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSUInteger length = [textField.text length] + [string length] - range.length;
if (length < 10) {
textField.text = [textField.text stringByAppendingString:@" "];
length++;
NSLog(@"%d", length);
}
else if (length >= 10 && string.length > 0)
{
NSLog(@"%d", length);
return NO;
}
if (string.length == 0) {
textField.text = [textField.text substringWithRange:NSMakeRange(0, length - 1)];
return YES;
}
return YES;
}
Swift 5:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let length = (textField.text?.count ?? 0) + string.count - range.length
if length < 10 {
var newString = NSString(string: textField.text ?? "").replacingCharacters(in: range, with: string)
let lastString = newString[newString.index(newString.startIndex, offsetBy: newString.count - 1)]
if !(lastString == " ") && !(string.isEmpty) {
newString = newString.appending(" ")
} else {
let tempRange = NSRange(location: range.location - 1, length: 2)
newString = NSString(string: textField.text ?? "").replacingCharacters(in: tempRange, with: "")
}
textField.text = newString
}
return false
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.