Как сделать приложение SMS для iPhone СПЕЦИАЛЬНЫМ viewController shift? - PullRequest
1 голос
/ 08 июня 2009

Если кто-либо использовал приложение SMS для iPhone, есть специальная анимация с представлением композиции.

Когда вы впервые нажимаете compose, отображается модальное представление управления. Однако, как только вы нажмете кнопку отправить, она перейдет к вашему контроллеру просмотра чата. Но вот несколько странных поступков:

1) Клавиатура остается нетронутой. Обычно, когда вы открываете и нажимаете новые контроллеры, вы теряете позиции клавиатуры.

2) Еще одно свидетельство того, что не было выдвигать / выдвигать новые контроллеры, потому что фактическое представление не изменилось. Как только вы нажмете кнопку «Отправить», сообщение «переместится» в всплывающее окно.

3) Тем не менее, если действительно нет появления / нажатия контроллеров, как вы меняете кнопки на панели навигации? Верхняя левая кнопка также изменилась с квадратной кнопки «отмена» на кнопку возврата в виде стрелки.

Есть идеи, как реализовать этот опыт?

Ответы [ 2 ]

0 голосов
/ 20 июня 2009

Я фактически реализовал очень похожий интерфейс для одного из моих приложений. Вот как это сделал:

Основным элементом управления является UITableView. Две кнопки вверху «Позвонить» и «Добавить в контакты» представляют собой представление заголовка табличного представления.

Каждая ячейка составлена ​​из 8 разных изображений. - По одному на каждый угол. - тот, который растягивается и заполняет промежуток между верхним левым и верхним правым углами. - Тот, который растягивает и заполняет промежуток между верхним левым и нижним левым углами. - Тот, который растягивает и заполняет промежуток между верхним правым и нижним правым углами. - Тот, который растягивается и заполняет промежуток между серединой слева и серединой справа. - Тот, который растягивает и заполняет промежуток между нижним левым и нижним правым углами.

0 голосов
/ 20 июня 2009

Вы можете изменить характеристики панели навигации в контроллере вида. Вы также можете изменить внешний вид экрана, изменив 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, я оставлю это другому эксперту.

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