2012-02-04 16 views
6

Ho cercato soluzioni e ho trovato il seguente codice. Ma non so come usarlo, sfortunatamente.Come si limitano i caratteri in UITextView?

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string { 
     NSUInteger newLength = [textField.text length] + [string length] - range.length; 
     return (newLength > 25) ? NO : YES; 
    } 

solo a scopo di test ho creato un IBACTION

-(IBAction)checkIfCorrectLength:(id)sender{ 
    [self textView:myTextView shouldChangeTextInRange: ?? replacementText: ?? ]; 

} 

cosa mi passa per la shouldChangeTextInRange e replacementText? O sto sbagliando completamente?

+1

Questo è un metodo di delega: leggere la documentazione di UITextView e dei relativi protocolli. – Till

risposta

11

Chiamare textView:shouldChangeTextInRange:replacementText: da checkIfCorrectLength: non ha senso. Se si desidera verificare la lunghezza dal più metodi, fattore il test fuori nel suo proprio metodo:

- (BOOL)isAcceptableTextLength:(NSUInteger)length { 
    return length <= 25; 
} 

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string { 
    return [self isAcceptableTextLength:textField.text.length + string.length - range.length]; 
} 

-(IBAction)checkIfCorrectLength:(id)sender{ 
    if (![self isAcceptableTextLength:self.textField.text.length]) { 
     // do something to make text shorter 
    } 
} 
+0

grazie che ha funzionato per me :) –

1

Non si chiama questo metodo da soli, la visualizzazione del testo lo chiama ogni volta che è sul punto di cambiare il testo. Basta impostare la proprietà delegate della vista del testo (ad esempio sul controller della vista) e implementare il metodo lì.

2

Ciao Ho trovato e modificato il codice qui. Quindi per gli utenti di xamarin. provare quanto segue:

textView.ShouldChangeText += delegate 
{ 
    if(textView.Text.Length > 159) // limit to one sms length 
    { 
     return false; 
    } 

    return true; 
} 
0

Se l'oggetto corrente è il delegato della vista del testo, quindi è possibile utilizzare il seguente frammento:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    return weightTextView.text.length + text.length - range.length < 7; 
} 

questo ha funzionato per me.

0
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
if([text length] == 0) 
{ 
    if([textView.text length] != 0) 
    { 
     return YES; 
    } 
    else { 
     return NO; 
    } 
} 
else if([[textView text] length] > your limit value) 
{ 
    return NO; 
} 
return YES; 

} 
Problemi correlati