【发布时间】:2015-02-02 18:23:00
【问题描述】:
我有一个视图,它在顶部有一个 tableview,在 tableview 底部有一个搜索文本字段(带有一个按钮)。我正在尝试实现动态搜索,以便在用户键入时重新加载表格视图。搜索字段很好地位于键盘顶部并进行搜索。但在某些情况下,当用户仍在键入时,它会位于键盘下方。这通常发生在搜索返回 0 结果时,这意味着 tableview 为空,或者 tableview 的行恰好适合分配给 tableview 的高度。我不确定为什么 tableview 重新加载会使搜索字段回到页面底部,即使搜索字段不是 tableview 的一部分。
这是我用来根据键盘状态移动搜索字段的代码:
- (void)adjustView:(NSNotification *)notification {
CGRect keyboardFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
keyboardFrame = [self.view convertRect:keyboardFrame fromView:self.view.window];
CGRect viewFrame = self.searchView.frame;
viewFrame.origin.y = keyboardFrame.origin.y - viewFrame.size.height;
self.searchView.frame = viewFrame;
}
这里的 searchView 是包含文本字段和按钮的视图。 非常感谢任何帮助。
【问题讨论】:
-
文本字段实际上是表格视图的一部分吗?就像在它的一个牢房里一样?
-
不,不是。主视图有一个 tableview 和一个有 2 个小部件的视图 - textview 和一个按钮。
-
您能发布用于上下移动 UITextField 的代码吗?
-
添加了我用来移动 UITextField 的代码。但是请注意,当文本字段自动执行时,不会调用此方法。仅当我单击文本字段并想要输入内容或单击键盘上的完成按钮时才会调用此方法。
-
除了
adjustView:方法之外,问题发生在代码中的其他地方。我在下面的回答中解释了原因。在您的代码中(例如在viewDidLayoutSubviews)中是否还有其他地方完全设置了self.searchView.frame.height?
标签: ios uitableview