iPhone UITextView оставляет место для двух строк внизу

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

Все перепробовала, и не знаю, что могу? У кого-нибудь есть идеи?


person Ton    schedule 17.10.2009    source источник


Ответы (4)


поскольку UITextView является подклассом UIScrollView, посмотрите на свойства UIScrollVIew, такие как contentInset и другие, чтобы увидеть, могут ли они создавать разрыв между вашим фреймом / границами и содержимым внутри.

person mahboudz    schedule 20.10.2009

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

    UIEdgeInsets contentInset = notes.contentInset;
    contentInset.bottom = 10.0;
    notes.contentInset = contentInset;

Примечания в этом примере - это UITextView.

person Aaron    schedule 11.11.2009

В дополнение к тому, что сказали Махбудз и Аарон, я могу подтвердить, что UITextView действительно добавляет contentInset в нижнюю часть, поэтому я поместил следующий код внутри textView:shouldChangeTextInRange:replacementText: из UITextViewDelegate

textView.contentInset = UIEdgeInsetsMake(0, 0, 5, 0);
person samvermette    schedule 12.06.2010
comment
Я использую и эту технику, и метод Аарона здесь: github.com / acani / acani-chat / blob / master / Lovers / Classes / Теперь он автоматически прокручивается лучше, но по-прежнему добавляет contentInset в конец, когда вы переходите к третьей строке. Есть идеи, как это предотвратить? Запустите его и проверьте консоль. - person ma11hew28; 25.07.2010
comment
Если вы реализуете правильный метод делегата, он должен устанавливать contentInset каждый раз, когда содержимое textView изменяется. NSLog the textView contentInset в этом методе, чтобы увидеть, правильно ли он установлен. - person samvermette; 26.07.2010

При перемещении кода из пера для его программной настройки я столкнулся с аналогичной проблемой - где бы ни была точка вставки, она прокручивалась вверх вне поля зрения. В конце концов я обнаружил, что мой UITextView имел нижнюю вставку из 32 пикселей, когда я создавал его программно, хотя я не уверен, почему. Поэтому я исправил это, установив contentInset при создании текстового представления:

textView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
person Christopher Pickslay    schedule 05.01.2011