2012-01-27 30 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; 
} 
}