gpt4 book ai didi

ios - 在文本字段中自动添加连字符但无法编辑文本字段(电话号码屏蔽)

转载 作者:行者123 更新时间:2023-11-29 10:28:20 25 4
gpt4 key购买 nike

使用下面的代码,我可以自动添加连字符,但无法在文本字段中正确进行编辑。

例如,当我单击以在文本字段中已输入的数字之间插入任何数字时,这将在文本字段的末尾插入数字,并且不会正确删除该数字。谁能帮帮我?

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if(textField == txtUserName)
{
if (range.location == 12)
{
return NO;
}
if (range.length == 0 && ![[NSCharacterSet decimalDigitCharacterSet] characterIsMember:[string characterAtIndex:0]])
{
return NO;
}
if (range.length == 0 && (range.location == 3 || range.location == 7))
{
txtUserName.text = [NSString stringWithFormat:@"%@- %@",txtUserName.text,string];
return NO;
}
if (range.length == 1 &&(range.location==4 ||range.location ==7))
{
range.location--;
range.length = 2;
txtUserName.text = [txtUserName.text stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"Nisha..%@",txtUserName.text);
return NO;
}
}
return YES;
}

最佳答案

当我们在 UITextField 中复制粘贴文本时,此代码也可以使用。

Warning- This code won't work with your keyboard's delete button. Anyway you need only keyboard's backspace button because Mobile keypad's delete button work like keyboard's backspace button

注意-为您的UITextField 使用tag 而不是直接将textField 与您的outlet 进行比较

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//(textField == txtUserName)
// don't compare with ID, use tag
if(textField.tag == 0 )
{
NSString *text = textField.text;
NSUInteger textLength = text.length;
NSString *trimText = [text stringByReplacingOccurrencesOfString:@"-" withString:@""];
NSUInteger trimTextLength = trimText.length;

if (range.length == 0 && [string rangeOfCharacterFromSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location != NSNotFound)
{
return NO;
}
if( string.length > 0 ) {
NSString *replacedText = text;
if(trimTextLength < 10) {
NSInteger remainingNumbers = (10-trimTextLength);
if(string.length > remainingNumbers) {
string = [string substringToIndex:remainingNumbers];
}
replacedText = [replacedText stringByReplacingCharactersInRange:range withString:string];
}
NSString *trimReplacedText = [replacedText stringByReplacingOccurrencesOfString:@"-" withString:@""];
if( trimReplacedText.length > 3 ) {
trimReplacedText = [trimReplacedText stringByReplacingCharactersInRange:NSMakeRange(3, 0) withString:@"-"];
}
if( trimReplacedText.length > 7 ) {
trimReplacedText = [trimReplacedText stringByReplacingCharactersInRange:NSMakeRange(7, 0) withString:@"-"];
}
textField.text = trimReplacedText;
return NO;
}
bool flag = false;
if (range.length == 1 &&(range.location == 4 || (range.location == 7 && (textLength-trimTextLength)== 1 && [text rangeOfString:@"-"].location == 7) || (range.location == 8 && (textLength-trimTextLength)== 2) ))
{
range.location--;
range.length = 2;
flag = true;
}
else if (range.length >= 1)
{
flag = true;
}

if(flag) {
NSString *replacedText = [textField.text stringByReplacingCharactersInRange:range withString:@""];

NSString *trimReplacedText = [replacedText stringByReplacingOccurrencesOfString:@"-" withString:@""];
if( trimReplacedText.length > 3 ) {
trimReplacedText = [trimReplacedText stringByReplacingCharactersInRange:NSMakeRange(3, 0) withString:@"-"];
}
if( trimReplacedText.length > 7 ) {
trimReplacedText = [trimReplacedText stringByReplacingCharactersInRange:NSMakeRange(7, 0) withString:@"-"];
}
textField.text = trimReplacedText;
return NO;
}
}
return YES;
}

关于ios - 在文本字段中自动添加连字符但无法编辑文本字段(电话号码屏蔽),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31017742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com