Nous essayons cela pour les paramètres de mot de passe, de sorte que le curseur ne doit pas être visible par l'utilisateur.Comment cacher le curseur du champ de texte sur l'iPhone lorsque le clavier est actif
Répondre
Essayez de définir the field's secureTextEntry
property à YES
.
effectivement je veux cacher le curseur (le rendre invisible) lors de l'édition du champ de texte .... – darshan
modifier: pour répondre à la question si, en se cachant le curseur se fait plus facile en superposant le UITextField
avec un autre UITextField
, où l'un dos est en fait le premier répondeur, et l'avant on agit au moins recevoir le focus (à l'aide -(void)textFieldDidBeginEditing:(UITextField *)textField
, et passer le focus sur). Dans
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
appliquer le remplacement sur la UITextField
avant exactement, en utilisant quelque chose comme
front.text = [front.text stringByReplacingCharactersInRange:range withString:string];
Vous allez probablement casser copier coller & fonctionnalité de cette façon. Aussi, faites très attention à ce que vous faites dans ces fonctions de délégué. Attendez-vous à l'inattendu.
Ma réponse originale, également applicable:
Je ne sais pas ce que dans ce contexte, la "sécurité avancée" signifierait, mais un coup d'oeil à
change the secure password character in uitextfield
à la ruine l'expérience utilisateur encore plus, et peut-être ajouter plus de «sécurité», vous pouvez:
- désactiver la fonctionnalité de backspace en retournant
NO
si[string length] == 0
- ajouter
1+(arc4rand()%4)
caractères pour chaque caractère saisi (comme on le voit sur certains systèmes de fenêtrage) - ajouter des caractères aléatoires au lieu d'un caractère d'espace réservé constant
mais je dois dire que Je vraiment ne vois pas le point de tout cela.
Vous pouvez utiliser un champ de texte fictif masqué et utiliser le délégué textDidChage pour TextField et utiliser cette valeur pour remplir le champ Valeurs masquées dans le mot de passe réel.
Dans Interface Builder ont un champ de texte factice qui est caché, maintenir un IBOutlet pour que dire
IBOutlet UITextField * passwordField; IBOutlet UItextField * dummyField;
délégué a également établi pour cela et écrire les méthodes délégué suivantes
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *dummyText = dummyField.text;
NSString *changedText = @"";
if(dummyField == textField)
{
if([string length] == 0)
{
if([dummyText length] <= 1)
{
changedText = @"";
}
else
{
changedText = [NSString stringWithFormat:@"%@",[dummyText substringToIndex:[dummyText length] - 1]];
}
}
else
{
changedText = [NSString stringWithFormat:@"%@%@",dummyText,string];
}
passwordField.text = changedText;
}
return YES; }
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if(passwordField == textField)
{
[dummyField becomeFirstResponder];
return NO;
}
return YES; }
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES; }
J'ai eu ce problème aussi.J'ai utilisé la solution décrite here
Il remplace le UITextField avec un UILabel personnalisé avec les réglages suivants:
- Remplacer les propriétés inputView et inputViewAccessory pour permettre le réglage de la vue du clavier à apparaître lorsque l'étiquette devient la première répondeur.
- Pour que l'étiquette réponde aux événements tactiles, remplacez la méthode isUserInteractionEnabled pour toujours retourner YES. En outre, remplacez la méthode touchEnded pour que l'étiquette soit le premier répondeur lorsqu'un contact est détecté. Remplacer la méthode canBecomeFirstResponder pour toujours retourner YES.
- Cela permettra à la vue d'entrée de monter.
@interface PRLabel : UILabel
@property (strong, nonatomic, readwrite) UIView* inputView;
@property (strong, nonatomic, readwrite) UIView* inputAccessoryView;
@end
@implementation PRLabel
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
-(BOOL)isUserInteractionEnabled
{
return YES;
}
-(BOOL)canBecomeFirstResponder
{
return YES;
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self becomeFirstResponder];
}
@end
Pourquoi voulez-vous cacher le curseur? Vous devez masquer les caractères, ce qui est fait en définissant secureTextEntry à YES, comme @Peter a répondu. –
J'ai besoin de cacher (rendre invisible) le curseur de l'utilisateur. sa sécurité juste avancée que je voulais mettre en œuvre. – darshan