Прокрутка экрана вверх, чтобы открыть TextView над клавиатурой - PullRequest
0 голосов
/ 24 мая 2010

Я думаю, что упускаю что-то очевидное и буду благодарен за ответ.

У меня есть вид с двухсекционным сгруппированным табличным представлением, каждый раздел имеет одну строку и текстовое представление, высоты строк 335 и 140. Это позволяет для поля с приятно закругленными углами набирать текст при появлении клавиатуры (Раздел 140 высот) и когда клавиатура распущена, хорошая коробка для чтения текста (заметки); Большую часть времени используется без клавиатуры.

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

[UIView beginAnimations:@"showKeyboardAnimation" context:nil];
[UIView setAnimationDuration:0.50];
self.view.frame = CGRectMake(self.view.frame.origin.x,
                             self.view.frame.origin.y,
                             self.view.frame.size.width,
                             self.view.frame.size.height - 216);
[UIView commitAnimations];

Но с помощью приведенного выше кода 2 раздела tableView остаются без прокрутки, перемещаются только панель инструментов и клавиатура. С помощью следующего кода (найденного в предыдущих сообщениях) перемещаются и панель инструментов, и разделы tableView.

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.50];

CGRect rect = self.view.frame;
rect.origin.y -= 216; 
self.view.frame = rect;

[UIView commitAnimations];

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

Второй вопрос: смогу ли я прокрутить секцию меньшей высоты от экрана к клавиатуре и одновременно переместить панель инструментов вверх на 216?

Спасибо

Ответы [ 2 ]

1 голос
/ 24 мая 2010

Возможно, я чего-то здесь упускаю, но в первом фрагменте кода вы меняете высоту на 216. На втором фрагменте кода вы меняете источник всего представления на 216 в направлении y.

В зависимости от того, как у вас установлен фрейм в IB, первый фрагмент кода может не сдвинуть его, если вы не позволите ему двигаться в этом направлении.Проверьте свои настройки в окне инспектора.

Когда вы говорите «без прокрутки», вы имеете в виду, что они не меняют местоположение в главном окне, верно?Это будет отличаться от их фактической прокрутки (что вы также можете сделать, изменив значение прокрутки).

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

http://cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html

0 голосов
/ 25 мая 2010

Из памяти что-то вроде

tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
...