Как сделать SMS-приложение для iPhone SPECIAL viewController смещением?

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

Когда вы впервые нажимаете кнопку «Создать», отображается модальное окно управления. Однако, как только вы нажмете «Отправить», он переключится на ваш контроллер представления чата. Но вот несколько странное поведение:

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

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

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

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


person erotsppa    schedule 07.06.2009    source источник


Ответы (2)


Вы можете изменить характеристики панели навигации в контроллере представления. Вы также можете изменить внешний вид экрана, напрямую изменив viewController.view. В этом примере, когда пользователь нажимает «Отправить», вы можете использовать следующий код для изменения панели навигации:

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 и может быть довольно болезненным. Честно говоря, я не знаю, как они рисуют такой симпатичный интерфейс обмена мгновенными сообщениями, я оставлю это на усмотрение другого эксперта.

person Tim Bowen    schedule 19.06.2009

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

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

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

person Ron Srebro    schedule 20.06.2009