我有UITableView
两个自定义单元格,每个单元格都有一个子视图,UITextField
里面有一个。我尝试UIButton
在顶部添加一个UITableView
并拥有它,resignFirstResponder
但这仅意味着您将无法点击其他任何地方 - 甚至UITextFields
无法输入文本。
如果我在这两个之外点击,我该如何做到这UITextFields
一点,我可以调用 resignFirstResponder,以便用户可以返回其他单元格?
谢谢
我有UITableView
两个自定义单元格,每个单元格都有一个子视图,UITextField
里面有一个。我尝试UIButton
在顶部添加一个UITableView
并拥有它,resignFirstResponder
但这仅意味着您将无法点击其他任何地方 - 甚至UITextFields
无法输入文本。
如果我在这两个之外点击,我该如何做到这UITextFields
一点,我可以调用 resignFirstResponder,以便用户可以返回其他单元格?
谢谢
一个很好的简单方法是继承 UITableView 并实现触摸方法(不要忘记之后将它们传递给超级!)。从那里您可以检查触摸开始并确定它是否是 UITextField 内部的触摸(使用 UIView 中的 hitTest: 方法)。如果 hitTest 没有返回 UITextField,您可以调用控制器中的方法来让第一响应者辞职。希望这会为您指明正确的方向!
与其尝试在该字段之外点击以辞职第一响应者,不如在键盘显示时使用 -setFrame 调整您的表格视图的大小,使其位于键盘上方的可见区域。然后您就可以将视图滚动到其他单元格。您可以通过注册这样的事件来通知您键盘是可见的:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
然后实现keyboardWillShow:
- (void)keyboardWillShow:(NSNotification*)notification;
{
[tableView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 200.0f)];
}
最好的祝福。