Перемещение курсора в начало UITextField - PullRequest
6 голосов
/ 15 ноября 2010

Есть ли способ сделать курсор в начале UITextField?

Когда я отображаю элемент управления с содержимым, курсор помещается в конец строки.Я бы хотел перенести это в начало.

Ответы [ 3 ]

19 голосов
/ 20 ноября 2012

UITextField соответствует протоколу UITextInput, который предоставляет методы, позволяющие управлять выбранным диапазоном.Это работает в моем тестировании:

-(void)textFieldDidBeginEditing:(UITextField *)textField {
    textField.selectedTextRange = [textField
        textRangeFromPosition:textField.beginningOfDocument
        toPosition:textField.beginningOfDocument];
}
8 голосов
/ 15 ноября 2010

Вы сражаетесь с системой на этом.UITextField не имеет открытых свойств для установки позиции курсора (что фактически соответствует началу текущего выбора).Если вместо этого вы можете использовать UITextView, следующие методы делегата приведут курсор к началу текста.Просто имейте в виду, что пользователи не ожидают такого поведения, и вам следует дважды проверить свои мотивы желания сделать это.

- (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;
    }
}

Где shouldMoveCursor - это переменная BOOL, которую вы поддерживаете в контроллере.

1 голос
/ 03 февраля 2014

у меня работает

// 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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...