2011-01-04 2 views
2

Я работаю над приложением, которое будет использовать пользовательскую клавиатуру для ввода текста. Клавиатура должна иметь клавиши «вперед» и «назад».iOS - работа с неспособностью установить позицию курсора в UITextField

Некоторая охота на СО предполагает, что программно установить положение курсора в UITextField.

Вместо этого я использовал UITextView. Это позволяет установить положение курсора. Но поведение прокрутки становится чрезвычайно раздражающим.

Мне интересно, знает ли кто-нибудь о хорошем обходном пути. В принципе, я хочу что-то, что имеет текст и курсор, и я могу программно установить позицию курсора.

EDIT: Интересно, если у меня есть UITextField в симуляторе, и я нажимаю клавишу со стрелкой вперед или назад на моей клавиатуре Mac, курсор перемещается вперед или назад. Однако я не вижу никакого способа воспроизвести это поведение на устройстве. , , или, если на то пошло, щелчком мыши на экране симулятора.

ответ

0

Я также использую UITextView для самой цели установки положения курсора.

Если подкласс UITextView (который сам по себе является конкретизацией UIScrollView), вы можете переопределить «scrollingEnabled» и вернуть NO:

- (BOOL) scrollingEnabled 
{ 
    return NO; 
} 

Я также должен был играть со свойствами contentInset и contentOffset, чтобы получить именно то, что Я хотел.

+0

, даже если я устанавливаю self.scrollEnabled = НЕТ при инициализации и переопределении isScrollEnabled, чтобы всегда возвращать NO, он все же может прокручиваться вверх, если выбрано. («Может» зависит от размера шрифта относительно размера представления.) –

+0

да, вам придется настроить размер вашего вида. – TomSwift

+0

извините; вы правы. В моем проекте у меня был какой-то мертвый код. Я устанавливаю scrollEnabled в NO, и мне нужно настроить размер и отслеживать входные данные в поле, чтобы избежать прокрутки полностью. – TomSwift

4

Принятый ответ был правильным в то время, но теперь устарел. В iOS 5 UITextField соответствует протоколу UITextInput. Поэтому положение курсора можно установить с помощью свойства selectedTextRange.

Смежные вопросы