调整消息传递应用程序的视图

时间:2014-04-08 04:41:19

标签: ios objective-c

我的聊天应用程序遇到了一些小问题,包括表格视图和文本字段。当我点击文本字段时,键盘会弹出并按下表格视图和文本字段,以便我可以输入我的信息。但是,由于表视图上升,一旦我发送消息,消息就会显示在表视图的第一个单元格中,最终会被隐藏,因为它不在视图范围内,除非我隐藏键盘。你们认为这样做的正确方法是什么?我认为当我扩展键盘而不是整个视图时,文本字段应该是唯一向上移动的东西?有人做过类似的事吗?

以下是我用于调整视图的代码

- (void)moveView:(NSDictionary*)userInfo up:(BOOL)up
{
    CGRect keyboardEndFrame;
    [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]
     getValue:&keyboardEndFrame];

    UIViewAnimationCurve animationCurve;
    [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey]
     getValue:&animationCurve];

    NSTimeInterval animationDuration;
    [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]
     getValue:&animationDuration];

    // Get the correct keyboard size to we slide the right amount.
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:animationDuration];
    [UIView setAnimationCurve:animationCurve];

    CGRect keyboardFrame = [self.view convertRect:keyboardEndFrame toView:nil];
    int y = keyboardFrame.size.height * (up ? -1 : 1);
    self.view.frame = CGRectOffset(self.view.frame, 0, y);

    [UIView commitAnimations];

}

2 个答案:

答案 0 :(得分:1)

向上/向下移动文本字段以及调整表格视图的大小以及显示/隐藏键盘,而不仅仅是上下移动整个视图。无论如何,您的整个表格视图都是可见的。

答案 1 :(得分:0)

添加新单元格后,应立即使用scrollToRowAtIndexPath:atScrollPosition:animated:滚动tableview。键盘显示和隐藏时,还应重新定位文本字段。 您必须使用contentInset属性。

您可以参考此问题UITableView slightly goes up when keyboard hides。如果您不熟悉,请浏览contentInset属性,如果您需要进一步澄清,请告诉我。