Вы можете изменить характеристики панели навигации в контроллере вида. Вы также можете изменить внешний вид экрана, изменив viewController.view напрямую. В этом примере, когда пользователь нажимает send, вы можете использовать следующий код для изменения навигационной панели:
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:[NSString stringWithFormat:@"Messages:(%i)", messageCount] style:UIBarButtonStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = back;
[back release];
UIBarButtonItem *edit = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style:plain target:self action:@selector(editMessage)];
self.navigationItem.rightBarButtonItem = edit;
[edit release]
И тогда вы реализуете editMessage:
- (void)editMessage {
//Go into edit mode, whatever that code looks like.
}
Затем они просто не могут вызвать [self.textField resignFirstResponder] после нажатия кнопки «Отправить», поэтому клавиатура остается там. Вы заметите, что если вы загружаете старый разговор, представление загружается с полем отправки в нижней части экрана и без клавиатуры. Это соответствует стандартному поведению объектов UITextField.
Непосредственное взламывание представления объясняется в файлах справки для UIView и может быть довольно болезненным. Честно говоря, я не уверен, как они рисуют этот красивый интерфейс IM, я оставлю это другому эксперту.