2011-04-27 69 views

回答

5

試試這個代碼。

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

    NSString *separator = @"-"; 
    int seperatorInterval = 5; 
    NSString *originalString = [textField.text stringByReplacingOccurrencesOfString:separator withString:@""]; 

    if (![originalString isEqualToString:@""] && ![string isEqualToString:@""]) { 

     NSString *lastChar = [textField.text substringFromIndex:[textField.text length] - 1]; 
     int modulus = [originalString length] % seperatorInterval; 

     if (![lastChar isEqualToString:separator] && modulus == 0) { 

      textField.text = [textField.text stringByAppendingString:separator]; 
     } 
    } 

    return YES; 
} 
+0

只是在實現這一個現在,得到一些錯誤......但只是因爲我是一個菜鳥:P – tinhead 2011-04-27 21:21:02

+0

如何連接到我的regTextField?此外,我不知道我必須在此方法的標題中聲明什麼。 – tinhead 2011-04-27 23:15:15

+0

男人...嘗試了我所知道的一切,不能得到這個工作.. – tinhead 2011-04-28 02:27:34

0

只需聲明並分配一個2個字符串即可。將數字存儲在一個字符串(str 1)中並對每個條目的字符串長度進行計數。檢查時,該字符串lenght將四位,執行

str2 = [str1 appendByString:@"`"]; 

現在str1 = str2;

再次重複這個過程中循環使用4位數字的增量。

希望它會有所幫助。

+0

人力資源管理模式,是有幫助,但我不知道這是否會動態地添加的連字符的用戶類型....說的時候用戶在鍵入文本字段時,我想讓連字符在第五個字符後彈出,而不會與用戶鍵入數字序列干涉。 – tinhead 2011-04-27 04:48:15

+0

這將有助於當你最後的字符串來。不要以爲它會在那個時候顯示你的用戶輸入的數字。 – 2011-04-27 04:56:38

1

假設您使用UITextField進行輸入,則可以使用UITextFieldTextDidChangeNotification操作在每次修改文本時作出響應。一個快速而粗略的例子:

- (IBAction)textChanged:(UITextField*)sender 
{ 
    NSString* curText = sender.text; 

    //when checking the length, you need to exclude hyphens from the count 
    //which is currently not being done (thanks @titaniumdecoy) 
    if([curText length] % 5 == 0) 
    { 
     sender.text = [curText stringByAppendingString:@"-"]; 
    } 
} 
+0

這將不允許您通過最後插入的連字符後退。 – titaniumdecoy 2011-04-27 04:51:59

+0

你也沒有考慮到連字符本身對字符串長度的貢獻。 – titaniumdecoy 2011-04-27 04:53:35

+0

對不起,這裏遲到了,出於某種原因,我認爲這是一個UILabel實現的事情。我會添加一條評論來思考這個問題(因爲額外的代碼將超出答案的範圍)。感謝您指出。 – 2011-04-27 04:55:07

0

只是一個概念試圖讓每個5個字符的字符串,然後連字符追加到這些串聯,然後每一個。爲此,你需要做substrings.use數組中此邏輯功能

-(NSString *)makeMyString:(NSString *)stringA 
{ 
NSMutableArray *tempArray1=[NSMutableArray array]; 
    //NSString *[email protected]"12345123451234512"; 
     NSString *s=stringA; 
    BOOL flag=YES; 
    while(flag) 
    { 
     NSString *str; 
     if([s length]>=5) 
      str=[s substringWithRange:NSMakeRange(0,5)]; 
     else 
      str=s; 
     [tempArray1 addObject:str]; 
     str=nil; 
     if([s length]>=5) 
      s=[s substringWithRange:NSMakeRange(5,([s length]-5))]; 
     else 
      [email protected]""; 
     if([s isEqualToString:@""]) 
      flag=NO; 
    } 

    NSString *[email protected]""; 
    for(int i=0;i<[tempArray1 count];i++) 
    { 
     if([[tempArray1 objectAtIndex:i] length]==5) 
      makeString =[NSString stringWithFormat:@"%@%@`",makeString,[tempArray1 objectAtIndex:i]]; 
     else { 
      makeString =[NSString stringWithFormat:@"%@%@",makeString,[tempArray1 objectAtIndex:i]]; 
     } 

    } 
    NSLog(@"%@",makeString); 
return makeString; 
} 
+0

該方法不能返回實際的字符串,而不是隻是指向字符串的指針,所以該方法的頭看起來像這樣 - (NSString *)makeMyString:(NSString *)stringA 但是我遇到問題試圖將此方法傳遞給我的文本框。 – tinhead 2011-04-27 20:42:18

+0

我真正想做的是當用戶輸入文本字段時,連字符會在用戶輸入時彈出...我只是不知道該怎麼做。 – tinhead 2011-04-27 21:02:11

+0

現在這個代碼很好,並返回一個字符串與hypen。你可以在textview委託方法中調用這個方法,在按下每個鍵之後傳遞textfeild的文本。委託 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)範圍replacementString:(NSString *)字符串 – Ishu 2011-04-28 04:00:40