Vai al contenuto

isEqual:(id) [Risolto]


Messaggi raccomandati

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


{


    NSString *sRisultante = [textField.text stringByReplacingCharactersInRange: range withString: string];


    NSInteger holder;


    NSScanner *scan = [NSScanner scannerWithString: sRisultante];


    return ([scan scanInteger:&holder]  /*  ||[scan isEqual:???]  */  )&&[scan isAtEnd];


}

Questo pezzo di codice impedisce all'utente di scrivere su textfield caratteri che non siano numeri.

Però la virgola devo accettarla, quindi ho provato con il metodo isEqual :        [scan isEqual:@"-"]        non funziona, forse perché sbaglio a controllare con la stringa "-"

 

Che cosa devo inserire al posto di @"-" ?? E potreste spiegarmi bene come funziona il metodo isEqual? grazie

Link al commento
Condividi su altri siti

se glielo passo come carattere [scan isEqual:',' mi da un errore ed un avviso, non vuole un tipo id, ma io non so cosa voglia dire:

 

Implicit conversion of 'int' to 'id' is disallowed with ARC

Incompatible integer to pointer conversion sending 'int' to parameter of type 'id'; 

 

 

[scan charactersToBeSkipped] mi restituisce un campo di caratteri, a me serve un bool: vero=scrive il carattere, falso=non scrive

 

ho cercato cosa sia il tipo id, ma non ci ho capito molto

Link al commento
Condividi su altri siti

ho cercato cosa sia il tipo id, ma non ci ho capito molto

 

id è un puntatore generico ad oggetto.

Difficile immaginare che non sai cosa sia se stai programmando, visto che praticamente qualsiasi classe ne fa uso, a partire dai metodi init alle action.  :shock:

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

  • 3 settimane dopo...

puoi usare questo (decide se usare il punto o la virgola e il numero di decimali che vuoi accettare)

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField == self.myTextField)
    {
        NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
        
        NSString *expression = @"^([0-9]+)?(\\,([0-9]{1,2})?)?$";
        
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
                                                                               options:NSRegularExpressionCaseInsensitive
                                                                                 error:nil];
        NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
                                                            options:0
                                                              range:NSMakeRange(0, [newString length])];
        if (numberOfMatches == 0)
            return NO;
    }
    
    return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}

Il nostro nome è sritto nella storia B.R.N.

Link al commento
Condividi su altri siti

  • 2 settimane dopo...
  • 3 settimane dopo...

Ciao, scusa se non ti ho più risp ma non avevo visto il tuo messaggio. probabilmente avrai già capito il significato della stringa, comunque se può esserti utile io uso questo quando ho bisogno:  http://gskinner.com/RegExr/?2rhq7

Ciao.

Il nostro nome è sritto nella storia B.R.N.

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...