2013-09-26 4 views
0

У меня есть UITableView, в котором у меня есть несколько пользовательских ячеек, а моя последняя ячейка содержит UISearchbar. Я подключил соответствующий delegates и ссылаюсь на outlets и может получить клавиатуру для отображения. Проблема, с которой я сталкиваюсь, заключается в том, что searchbar находится в самом низу моего tableview, т. Е. Он является частью самой последней ячейки. Таким образом, хотя клавиатура отображается, под ней скрывается searchbar, так как я подозреваю, что она не может прокручиваться до этого местоположения с момента последней ячейки в представлении. У кого-нибудь есть мысли по этому поводу и как преодолеть эту ситуацию.UISearchbar внутри UITableView как последняя ячейка, скрывающая клавиатуру

ответ

2

Самое легкое решение состоит в том, чтобы ваш контроллер просмотра был подклассом UITableViewController. Контроллер такого типа будет обрабатывать такие проблемы точно так же.

Если вы не можете, вы должны слушать, что на клавиатуре будут отображаться/скрываться уведомления и устанавливать contentInset и scrollviewIndicatorInsets внизу экрана таблицы на высоту клавиатуры. Затем вы можете прокручивать определенную ячейку на видимую. Когда клавиатура скрывается, установите нижнюю часть в предыдущее значение.

+0

Да .. Просто изменил его на UITableViewController. У меня был старый код, где мне нужно было быть UIViewController, но это уже не так. Лучше всего идти с доступными решениями, чем прокладывать себе путь через систему. Благодаря.. – Sharath

-1

Да .... Два способа

1) либо вы можете изменить кадр всего tableView и тянуть всю таблицу вверх, уменьшая позиции у из tableView

[tableView setFrame:CGRectMake(100,100,100,100)]; 

или

2) Вы можете изменить contentOffset таблицы, чтобы программно прокрутить последнюю ячейку tableView, чтобы она была видна пользователю.

[tableView setContentOffset:CGPointMake(0,400) animated:YES] 

Надеюсь, это вам поможет.

+0

'contentOffset' - не очень правильное решение, потому что вы просматриваете представление таблицы больше, чем нужно. Когда клавиатура скрывается, вид будет «прыгать», чтобы исправить смещение. Это уродливый переход. –

+0

до этого вы можете увеличить contentSize [tableView setContentSize: CGSizeMake (0,400)]. –

+0

Что такое "400"? Твердо закодированные значения никогда не являются хорошей идеей. Что делать, если представление загружено на iPad? –

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