Ios 如何将UIView固定到其superview的底部,但在键盘出现时使其移动?

Ios 如何将UIView固定到其superview的底部,但在键盘出现时使其移动?,ios,objective-c,uitableview,uiview,xcode6,Ios,Objective C,Uitableview,Uiview,Xcode6,我有一个UIView,其中包含UIView和UITableView。子UIView用于合成,它与任何messenger一样具有文本字段和发送按钮。如何将此子UIView固定/修复到Superview的底部,并将其保持在UITableView的顶部?但是,当文本字段处于焦点时,子UIView也需要高于键盘。您可以手动执行此操作。您可以注册获取键盘通知。 您可以使用以下功能 [[NSNotificationCenter defaultCenter] addObserver:self

我有一个UIView,其中包含UIView和UITableView。子UIView用于合成,它与任何messenger一样具有文本字段和发送按钮。如何将此子UIView固定/修复到Superview的底部,并将其保持在UITableView的顶部?但是,当文本字段处于焦点时,子UIView也需要高于键盘。

您可以手动执行此操作。您可以注册获取键盘通知。 您可以使用以下功能

    [[NSNotificationCenter defaultCenter] addObserver:self
            selector:@selector(keyboardWasShown:)
            name:UIKeyboardDidShowNotification object:nil];

   [[NSNotificationCenter defaultCenter] addObserver:self
             selector:@selector(keyboardWillBeHidden:)
             name:UIKeyboardWillHideNotification object:nil];

关于这方面有一篇很好的文章,其中包含代码片段。

对于AutoLayout和AutoResizingMasks struts and springs样式的布局,您的问题的答案是不同的

对于Xcode 6的默认设置AutoLayout,您要做的是创建一个约束,将视图固定到它的superview的底部,就像正常情况一样。然后在IB控件中选择该约束并将其拖动到视图控制器的头文件中,然后为该约束创建一个IBOutlet

然后,您可以为键盘编写通知处理程序来显示通知,并在该处理程序中更改约束属性的常量偏移量。最后一步是在UIView动画块中调用superview的LayoutIfNeed方法。这将导致更新约束时的布局更改设置动画

然后,如果键盘将隐藏通知,则执行相反的操作


如果你做的是struts和springs样式的布局,它类似但更简单。您只需为要移动的视图创建一个出口,然后让键盘显示通知处理程序,使用UIView动画设置对视图中心属性的更改的动画。

在这些通知中更改tableView的content inset属性的顶部值是最简单的方法。