Как обновить UILabel, который является подпредставлением inputView? - PullRequest
1 голос
/ 04 июня 2011

У меня есть UITextView, где пользователь печатает текст.Когда клавиатура отображается, я добавляю inputView с UIlabel.Я хочу, чтобы этот UIlabel содержал длину текста.Это кажется очень простой задачей, но, к сожалению, она не обновляет этот счетчик слов UILabel, когда пользователь меняет текст ..

, вот как я загружаю inputView

_textView.inputView = [self inputAccessoryView];

в inputAccessoryView. Я просто добавляю UILabelкак подпредставление.Когда клавиатура отображается, UILabel также отображается с inputView.Я отслеживаю изменения на

- (void)textViewDidChange:(UITextView *)textView

, к сожалению, UILabel никогда не обновляется (перерисовывается).Когда я вхожу в консоль, его значение корректно, поэтому оно обновляется, но UIlabel никогда не перерисовывается и содержит значение по умолчанию.

Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2016

Я знаю, что это было 5 лет назад, но это может помочь другим, кто, как я, наткнулся на ваш вопрос.

Я использую UIToolbar в качестве inputAccessoryView (в моем случае это метка, гибкий разделитель)и кнопка).В случае события textFieldEditingChanged я перестраиваю часть панели инструментов следующим образом:

@IBAction func textFieldEditingChanged(_ sender: UITextField) {

    //get a reference to the toolbar
    let toolBar = sender.inputAccessoryView as! UIToolbar

    //create a new label and set size + other properties
    toolbarLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 40, height: 22))
    toolbarLabel.text = mySpecificCalculatedString(sender.text!)
    toolbarLabel.font = defaultFont(17)
    toolbarLabel.adjustsFontSizeToFitWidth = true
    let width = toolbarLabel.textRect(forBounds: CGRect(x: 0, y: 0, width: maxWidthForLabel, height: 0), limitedToNumberOfLines: 1).size.width
    toolbarLabel.frame = CGRect(x: 0, y: 0, width: width, height: 22)
    toolbarLabel.textColor = .black
    toolbarLabel.tag = 666

    //rebuild the specific tolbar item
    let customView = UIBarButtonItem(customView: toolbarLabel)
    toolBar.items![0] = customView
}

Примечание: простое изменение текста метки у меня тоже не сработало, пришлось его заново инициализировать.

Надеюсьпомогает.

0 голосов
/ 15 июня 2011

ты

_textView.delegate = self;

?

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