2012-01-27 86 views
1

的UITextField shouldChangeCharactersInRange方法我有一些文本字段和当我写11111111111于第一文本框(TCKimlikText)我设置一些字符串到另一文本框。首先,文本字段的(TCKimlikText)最大长度必须为11个字符。我尝试下面的代码。但我有一个问题。我无法删除我写入TCKimlikText文本框的内容。目标C

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 


if (TCKimlikText.text.length <11) { 

    if ([[TCKimlikText.text stringByReplacingCharactersInRange:range withString:string] isEqual:@"11111111111"]) 
    { 
     AdinizText.text = @"MEHMET"; 
     uyrukBtn.titleLabel.text = @"TC"; 
     BabaAdiText.text = @"HASAN"; 
     AnneAdiText.text = @"MELEK"; 
     SoyadinizText.text = @"AYDIN"; 
     AnneKizlikSoyadiText.text = @"OKUR"; 
     DogumTarihiText.text = @"01/01/1960"; 
     medeniDurumBtn.titleLabel.text = @"EVLİ"; 
     EsinizinAdiText.text = @"AYŞE"; 
     dogumYeriBtn.titleLabel.text = @"BURSA"; 
     kimlikTuruBtn.titleLabel.text = @"Nüfus Cüzdanı"; 
     KimlikVerilisNedeniText.text = @"YENİLEME"; 
     KimlikVerilisTarihi.text = @"12/01/2010"; 
     KimlikSeriNoText.text = @"16345"; 
     VergiKimlikNoText.text = @"45678"; 
     EvTelText.text = @"5443126274"; 
    } 
    return YES; 


} 

else return NO; 


} 

我该如何解决这个问题?

+0

请helpp我..的[shouldChangeCharactersInRange方法不是在目标C工作] – 2012-01-27 09:24:23

+0

可能重复(http://stackoverflow.com/questions/9019086/shouldchangecharactersinrange-method-not-work-in-objective-c) – 2012-01-27 09:58:24

+0

“我无法删除”是什么意思?这是你想要的:'TCKimlikText.text = nil;'? – vakio 2012-01-27 10:10:54

回答

2

最好的办法是以下几点:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 

NSString *resultStr = [TCKimlikText.text stringByReplacingCharactersInRange:range withString:string]; 

if (resultStr.length < 12) 
{ 

    if ([resultStr isEqual:@"11111111111"]) 
    { 
     NSLog(@"In"); 
     AdinizText.text = @"MEHMET"; 
     uyrukBtn.titleLabel.text = @"TC"; 
     BabaAdiText.text = @"HASAN"; 
     AnneAdiText.text = @"MELEK"; 
     SoyadinizText.text = @"AYDIN"; 
     AnneKizlikSoyadiText.text = @"OKUR"; 
     DogumTarihiText.text = @"01/01/1960"; 
     medeniDurumBtn.titleLabel.text = @"EVLİ"; 
     EsinizinAdiText.text = @"AYŞE"; 
     dogumYeriBtn.titleLabel.text = @"BURSA"; 
     kimlikTuruBtn.titleLabel.text = @"Nüfus Cüzdanı"; 
     KimlikVerilisNedeniText.text = @"YENİLEME"; 
     KimlikVerilisTarihi.text = @"12/01/2010"; 
     KimlikSeriNoText.text = @"16345"; 
     VergiKimlikNoText.text = @"45678"; 
     EvTelText.text = @"5443126274"; 
    } 
    return YES;   

} 

else return NO; 

}

这也将帮助您在有人将文本粘贴到您的文本字段。

+0

感谢您的回复,它的工作原理。当我将11111111111写入第一个文本字段时,文本字段的文本会出现(最多11个字符)并且我可以删除。但是,如果我删除文本,其他文本字段不会更改。我的意思是我写111111111111,没关系。但如果我删除这个比我写的东西而不是11111111111 textfields不是空的。我怎样才能做到这一点? – 2012-01-27 11:32:51

2

您可以检测使用

if ([string length] > 0) 

如果那是你的意思是不是,如果你的意思是你可以在其他文本字段更改,就可以使shouldChangeCharactersInRange仅在某些领域的工作使用

删除/退格
if (textField == self.myField) 
0
Use this code u achive your target 

这里您texfiled不允许进入更多的则15个字所以这是validation./ ..

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

if (textField == txtFirstName) 
{ 
    NSUInteger newLength = [txtFirstName.text length] + [string length] - range.length; 
    return (newLength > 15) ? NO : YES; 
} 
}