【问题标题】:How to do iPhone's SMS app SPECIAL viewController shifting?iPhone 的 SMS 应用 SPECIAL viewController 如何移动?
【发布时间】:2009-06-07 21:52:51
【问题描述】:

如果有人使用过 iPhone 的 SMS 应用程序,撰写视图会有一个特殊的动画。

当您第一次按下 compose 时,会显示一个模态视图控制器。但是,一旦您按下发送,它就会转移到您的聊天视图控制器。但这里有一些奇怪的行为:

1) 键盘保持不变。通常,当您弹出和推动新控制器时,您会丢失键盘位置。

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

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

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

【问题讨论】:

    标签: iphone uiviewcontroller model-view-controller


    【解决方案1】:

    您可以在视图控制器中更改导航栏的特征。您还可以通过直接更改 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 界面的,我将把它留给另一位专家。

    【讨论】:

      【解决方案2】:

      我实际上已经为我的一个应用程序实现了一个非常相似的 UI。这是怎么做到的:

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

      每个单元格由 8 个不同的图像绘制而成。 - 每个角落一个。 - 一种拉伸并填充左上角和右上角之间的间隙。 - 一种拉伸并填充左上角和左下角之间的间隙。 - 一种拉伸并填充右上角和右下角之间的间隙。 - 一种伸展并填补左中和右中之间的空隙。 - 一种可以拉伸并填充左下角和右下角之间的空隙。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-02
        • 2011-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-07
        相关资源
        最近更新 更多