2009-05-22 9 views
0

J'ai mis maxlength à mon champ de texte, quand j'ai entré des caractères maximum dans le champ de texte, le retour arrière ne fonctionne pas. En raison de cela, je suis incapable de modifier le contenu de textFields. Cela se produit lorsque je teste mon application sur iPhone sdk 3.0, mais il fonctionne correctement dans iPhone sdk 2.2.iPhone sdk 3.0 issue

Voici mon code,

- (BOOL)textField:(UITextField *)txtField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if (txtField.text.length >= 15 && range.length == 0) 
    { 
     return NO; 
    } 
    else 
    { 
     return YES; 
    } 
} 

pourquoi il arrive dans l'iPhone sdk 3.0?

Répondre

0

En haut de ma tête, le range.length == 0 retournera vrai pour le caractère de retour arrière, de sorte que vous retournez explicitement NO lorsque l'utilisateur appuie sur retour arrière sur un champ de texte intégral. Je vous suggère de changer la première condition à lire:

if (txtField.text.length + range.length > 15) 
    return (NO); 

... De cette façon vous testez si la chaîne modifiée serait trop grand pour (plutôt que de vérifier les dimensions individuelles de la valeur existante et l'ajout), et vous ne serez pas en contradiction avec le nouveau code de collage dans OS 3.0 qui pourrait ajouter plus d'un seul caractère au champ de texte à la fois.