UITextField устанавливает курсор на начальную позицию текста

Мне нужно переместить курсор, чтобы начать положение текста на установленный фокус на текстовом поле. Возможно ли это сделать?

3 ответа

Решение

Установите свой контроллер представления (или некоторый другой соответствующий объект) как текстовое поле delegate и реализовать textFieldDidBeginEditing: метод как это:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    UITextPosition *beginning = [textField beginningOfDocument];
    [textField setSelectedTextRange:[textField textRangeFromPosition:beginning
                                                          toPosition:beginning]];
}

Обратите внимание, что setSelectedTextRange: это метод протокола UITextInput (который UITextField реализует), так что вы не найдете его непосредственно в UITextField документация.

Если кто-то ищет ответ в Swift:

let desiredPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRangeFromPosition(desiredPosition, toPosition: desiredPosition)

Но я считаю, что это работает, только если курсор уже находится в текстовом поле. Вы можете использовать это, чтобы сделать это:

textField.becomeFirstResponder()
let desiredPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRangeFromPosition(desiredPosition, toPosition: desiredPosition)
self.selectedTextRange = [self textRangeFromPosition:newPos toPosition:newPos];

Проверьте это Нахождение позиции курсора в UITextField

Другие вопросы по тегам