2016-08-05 7 views
0

Kann mir jemand helfen, mit diesem Code unter Verwendung von Textfeldern sollte Zeichen in Bereich nur ändern zuerst wird ausgeführt?textfields sollte Zeichen im Bereich nur zuerst ändern wird ausgeführt

#define ACCEPTABLE_CHARACTERS1 @" 1234567890" 

- (BOOL)textField:(UITextField *)textField 
    shouldChangeCharactersInRange:(NSRange)range 
       replacementString:(NSString *)string 
{ 
    // first one................// 
    if (textField == self.phoneField) 
    { 
     NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS1] invertedSet]; 

     NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; 

     return [string isEqualToString:filtered]; 
    } 

    // second one ........     
    if (textField == self.phoneField) { 

     if (((range.location == 3)) ||(range.location == 7)) { 

      _phoneField.text = [NSString stringWithFormat:@"%@-%@", textField.text, string]; 

      return NO; 
     } 
     else if (range.length == 1 && 
        (range.location == 4 || range.location == 8)) { 
      range.location--; 
      range.length = 2; 
      textField.text = [textField.text stringByReplacingCharactersInRange:range withString:@""]; 

      return NO; 
     } 

     if (range.length+range.location > textField.text.length) { 
      return NO; 
     } 

     NSUInteger newLength = [textField.text length] + [string length] - range.length; 

     return newLength <=10; 
    } 
} 
+0

Können Sie erklären, was Sie hier brauchen? –

+0

Ich werde nicht beide Ausdrücke ausführen Sir – vamsi

+0

Zuerst, wenn Schließung wird jedes Mal Rückgabewert entweder NEIN oder JA. So wird Ihre Kontrolle nicht auf den zweiten gehen, wenn sie geschlossen wird! – Lion

Antwort

0

Sehen Sie verwenden zwei if-Anweisungen. aber am Ende der ersten if-Anweisung verwenden Sie zurückgeben, so dass die Kontrolle aus dieser Schleife kommen wird. Sogar beide Bedingungen sind richtig. Einfache Erklärung.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    if (1) { 
     NSLog(@"true"); 
     return; 
    } 
    if (true) { 
     NSLog(@"true1"); 
     return; 
    } 
    // Do any additional setup after loading the view, typically from a nib 
} 

Es wird nur wahr und nicht die TRUE1 drucken, da die Steuerung heraus kommen.

1

Da Ihr werden den Funktionswert in der ersten if Block Rückkehr wird es die zweite if Block nicht ausgeführt werden, die return Anweisung sofort beendet die Ausführung der aktuellen Funktion und kehrt das Argument als Wert der Funktion Anruf.

eine Nummer für Ihre Textfield tun formatiert Gehen Sie wie folgt

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

    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"1234567890"] invertedSet]; 

    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; 

    if (![string isEqualToString:filtered]) { 
     return NO; 
    } 
    if (((range.location == 3)) ||(range.location == 7)) 
    { 

     textField.text = [NSString stringWithFormat:@"%@-%@", textField.text, string]; 
     return NO; 
    } 
    else if (range.length == 1 && 
       (range.location == 4 || range.location == 8)) { 
     range.location--; 
     range.length = 2; 
     textField.text = [textField.text stringByReplacingCharactersInRange:range withString:@""]; 

     return NO; 
    } 

    if (range.length+range.location > textField.text.length) { 
     return NO; 
    } 
    NSUInteger newLength = [textField.text length] + [string length] - range.length; 
    return newLength <=12; 
} 
+0

jawohl ich habe gefunden, dass ich aber nicht in der Lage bin, das zu ändern Ich entfernte diesen Ausdruck noch den Code nicht ausgeführt..kann es ändern ... und danke – vamsi

+0

@vamsi Ersetzen Sie Ihre 'shouldChangeCharactersInRange' mit meinem Eines davon wird so funktionieren, wie Sie es möchten. –

+0

danke, mein Herr, es funktioniert, habe einen schönen Tag ............ – vamsi

Verwandte Themen