UITextField редактирование частичной строки - PullRequest
1 голос
/ 03 мая 2011

Я хотел бы иметь возможность редактировать текст в UITextField следующим образом: «Первая часть [] вторая часть»

  • часть между скобками должна быть отредактирована
  • , еслиЯ коснулся текстового поля и набрал «foo», он должен выглядеть так: «Первая часть [foo] вторая часть»
  • Я бы хотел, чтобы текст действовал, если вы просто писали в середине какого-то текста
  • пользователь не должен иметь возможности редактировать первую и вторую часть

Мой первый подход (после некоторого поиска) заключался в использовании текстовых полей leftView для «первой части» и rightView для«вторая часть», как с uilabel subview с текстом.Но я не могу понять, как правильно позиционировать.Особенно, чтобы он подходил динамически ...

Я на правильном пути?Есть ли более элегантный способ сделать это?Любая помощь приветствуется, спасибо.

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

В протоколе делегата UITextField есть метод, который должен делать именно то, что вы хотите:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

Если «первая часть» и «вторая часть» не должны изменяться, вы можете установить диапазон на их основе, то есть установить начало вашего диапазона как конец «первой части» и конец вашего диапазона быть общей длиной строки минус длина "второй части"

0 голосов
/ 03 мая 2011

Чтобы получить ширину среднего UITextField, вы можете использовать шрифт NSString - (CGSize) sizeWithFont: (UIFont *) и использовать его для установки размера UITextField.Как только вы знаете его кадр, вы можете расположить два других кадра UILabel.

Другой вариант может состоять в том, чтобы иметь одну строку, но заставить точку входа находиться между [] и запретить попытки установить ее вне этого диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...