iOS - 隐藏在键盘后面的UIView容器
我正在用用户填写的表单处理故事板视图。在底部是一个包含复选框和提交按钮的UIView页脚。当用户在文本字段中输入数据时,键盘显示并隐藏页脚 - 只有当隐藏键盘时,用户才能够选中复选框并提交表单。我已经看到了一些解决方案,用于从键盘后面移动文本字段,但不能用于UIView。有没有人有任何建议如何做到这一点?iOS - 隐藏在键盘后面的UIView容器
嘿,我只是想跟进我用来解决我的问题的方法。底部容器与底部布局指南具有垂直间距约束。我创建了一个IBOutlet的约束......
//define IBOutlet
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *footerConstraint;
然后我添加代码来调整恒定值键盘管理事件处理程序...
//in keyboardWillShow event handler
NSDictionary* info = [notification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
self.footerConstraint.constant = kbSize.height;
//in keyboardWillHide event handler
self.footerConstraint.constant = 0.0f;
通过这些调整约束的恒定值事件处理程序,我可以保持默认值,直到显示键盘,然后在隐藏键盘后设置默认值。
标准溶液中“Moving Content That Is Located Under the Keyboard” in the Text Programming Guide for iOS描述:
调整您的内容通常涉及临时调整一个或多个视图和定位他们,使文本对象仍然可见。使用键盘管理文本对象最简单的方法是将它们嵌入到
UIScrollView
对象(或其中一个子类UITableView
)中。显示键盘时,您只需重置滚动视图的内容区域并将所需的文本对象滚动到位。因此,在回应UIKeyboardDidShowNotification
时,您的处理程序方法将执行以下操作:
- 获取键盘的大小。
- 通过键盘高度调整滚动视图的底部内容插入。
- 将目标文本字段滚动到视图中。
第二步它使用户滚动滚动视图尽量向上看到的一切,包括(在你的情况下),使用复选框的条件和提交按钮。
然而,有一种方法可以让UIKit为您完成所有这些工作:将您的表单放置在故事板中作为静态单元格的表格视图。我建议你这样做,而不是。
当您将窗体作为具有静态单元的表格视图进行布局时,您仍然可以将窗体控件(文本字段,按钮等)连接到视图控制器中的出口和动作(它现在必须是UITableViewController
)。当键盘出现并消失时,UITableViewController
基类负责设置表视图的contentInset
,并负责滚动表视图以确保当前文本字段可见。
感谢罗布。表单本身位于ScrollView中,而页脚位于ScrollView下方的UIView中。将页脚移动到ScrollView而不是在它的帮助下?或者我应该看看把表单和页脚放到一个TableView中?这是另一位开发人员构建的,并且存在一些限制 - 我想尽可能避免大规模重构。 – gyochum
这听起来像你应该将页脚移动到滚动视图。 –
要么你可以关闭键盘ny按回车键,或者你可以移动一个偏移量的视图,或者你可以显示在键盘上的临时页脚视图。请显示你已经尝试过! –
处理键盘的最佳方法是通过IQKeyboardManager库。在这里尝试。 https://github.com/hackiftekhar/IQKeyboardManager –
@SivajeeBattina这只能处理键盘覆盖文本字段的情况。但如果键盘覆盖其他视图则不行。 –