[英]How to pin a UIView to the bottom of its superview, but have it move when the keyboard appears?
我有一个带有UIView和UITableView的UIView。 子UIView用于合成,它具有文本字段和类似于任何Messenger的Send按钮。 如何将该子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];
关于Apple Keyboard Management,有一篇很好的文章,带有代码片段。
您的问题的答案对于AutoLayout和AutoResizingMasks(支柱和弹簧)样式布局是不同的。
对于AutoLayout,这是Xcode 6的默认设置,您将执行的操作是创建一个约束,以正常方式将视图固定在其超级视图的底部。 然后,您将在IB中选择该约束并将其控制拖放到视图控制器的头文件中,并为该约束创建IBOutlet。
然后,您可以编写一个通知处理程序,使keyboard will show
通知,并在该处理程序中更改约束属性的常数(偏移)。 最后一步是在UIView动画块内调用父视图的layoutIfNeeded方法。 这会导致布局更改从更新约束变为动画。
然后您执行相反操作, keyboard will hide
通知。
如果您要进行支撑和弹簧样式的布局,则类似但更简单。 您只需为要移动的视图创建一个出口,然后使keyboard will show
通知处理程序,并使用UIView动画为视图的center属性设置动画。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.