如何做iPhone的短信应用SPECIAL viewController转移?

时间:2009-06-07 21:52:52

标签: iphone uiviewcontroller model-view-controller

如果有人使用了iPhone的短信应用程序,则会有一个包含撰写视图的特殊动画。

当您第一次按下复合时,会显示模态视图控制器。但是,只要按下发送,它就会切换到聊天视图控制器。但这里有一些奇怪的行为:

1)keybaord保持不变。通常当您弹出并按下新控制器时,您将丢失键盘位置。

2)进一步证明没有新控制器的弹出/推送,因为实际视图没有改变。按下发送后,消息会“滑动”到气泡视图。

3)但是,如果确实没有弹出/推动控制器,你如何更改导航栏上的按钮?左上角的按钮也从方形“取消”按钮变为箭头状的后退按钮。

任何想法如何实现这种体验?

2 个答案:

答案 0 :(得分:0)

您可以在视图控制器中更改导航栏的特征。您还可以通过直接更改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的帮助文件中进行了解释,可能会有点痛苦。老实说,我不确定他们如何绘制那个漂亮的IM界面,我会把它留给另一位专家。

答案 1 :(得分:0)

我实际上为我的某个应用实现了一个非常相似的用户界面。这是怎么回事:

主控件是UITableView。顶部“呼叫”和“添加到联系人”的两个按钮是表格视图标题视图。

每个细胞来自8个不同的图像。 - 每个角落一个。 - 伸展并填充左上角和右上角之间的间隙。 - 伸展并填充左上角和左下角之间的间隙的一个。 - 伸展并填充右上角和右下角之间的间隙。 - 伸展并填充中间左侧和中间右侧之间的间隙。 - 伸展并填充左下角和右下角之间的间隙。