Y a-t-il un moyen de placer le curseur au début d'un UITextField?Déplacement du curseur au début de UITextField
Lorsque j'affiche le contrôle avec du contenu, le curseur est placé à la fin de la chaîne. Je voudrais le déplacer au début.
Y a-t-il un moyen de placer le curseur au début d'un UITextField?Déplacement du curseur au début de UITextField
Lorsque j'affiche le contrôle avec du contenu, le curseur est placé à la fin de la chaîne. Je voudrais le déplacer au début.
Vous combattez le système sur celui-ci. UITextField
n'a aucune propriété publique pour définir la position du curseur (qui correspond réellement au début de la sélection en cours). Si vous pouvez utiliser un UITextView
à la place, les méthodes de délégué suivantes forcera le curseur au début du texte. Sachez simplement que les utilisateurs ne s'attendent pas à ce comportement et vous devriez vérifier vos motivations pour le faire.
- (void)textViewDidBeginEditing:(UITextView *)textView {
shouldMoveCursor = YES;
}
- (void)textViewDidChangeSelection:(UITextView *)textView {
if(shouldMoveCursor)
{
NSRange beginningRange = NSMakeRange(0, 0);
NSRange currentRange = [textView selectedRange];
if(!NSEqualRanges(beginningRange, currentRange))
[textView setSelectedRange:beginningRange];
shouldMoveCursor = NO;
}
}
Où shouldMoveCursor
est une variable BOOL
vous conservez dans votre contrôleur.
UITextField
est conforme au protocole UITextInput
, qui fournit des méthodes permettant de contrôler la plage sélectionnée. Cela fonctionne dans mes tests:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
textField.selectedTextRange = [textField
textRangeFromPosition:textField.beginningOfDocument
toPosition:textField.beginningOfDocument];
}
Cette solution fonctionne très bien! Assurez-vous de vous conformer au protocole de délégué UITextField. :) –
fonctionne pour moi
// Get current selected range , this example assumes is an insertion point or empty selection
UITextRange *selectedRange = [textField selectedTextRange];
// Calculate the new position, - for left and + for right
UITextPosition *newPosition = [textField positionFromPosition:selectedRange.start offset:3];
// Construct a new range using the object that adopts the UITextInput, our textfield
UITextRange *newRange = [textField textRangeFromPosition:newPosition toPosition:newPosition];
// Set new range
[textField setSelectedTextRange:newRange];
Hey warrenm, thaks ami. Ce code est juste un homme génial. Chapeau. – anshul